Asp.Net C#,如何打开默认的电子邮件客户端与一个机构提交的信息
问题描述:
正如标题所说,使用ASP.Net项目的C#代码隐藏,我想打开用户的默认邮件客户端与消息身体已经充满了某些信息。Asp.Net C#,如何打开默认的电子邮件客户端与一个机构提交的信息
我能够直接发送信息的信息在它:
private static bool EnvoieCourriel(string adrCourriel, string corps, string objet, string envoyeur, Attachment atache)
{
SmtpClient smtp = new SmtpClient();
MailMessage msg = new MailMessage
{
From = new MailAddress(envoyeur),
Subject = objet,
Body = corps,
IsBodyHtml = true
};
if (atache != null)
msg.Attachments.Add(atache);
try
{
msg.To.Add(adrCourriel);
smtp.Send(msg);
}
catch
{
return false;
}
return true;
}
我也可以打开用户的默认电子邮件客户端:
string email = op.CourrielOperateur1;
ClientScript.RegisterStartupScript(this.GetType(), "mailto", "parent.location='mailto:" + email + "'", true);
但是现在......我会喜欢像第二个例子一样打开客户端,但身体必须已经被填充默认文本...
任何想法,将不胜感激。
答
C#不能直接执行此操作。在你的情况下,你需要使用C#和JS结合起来才能使用它。
如RFC 6068所描述的,至mailto允许指定主题和 体,以及CC字段。例如:
mailto:[email protected]?subject=Subject&body=message%20goes%20here
用户不需要点击一个链接,如果你强迫它与 的JavaScript
window.location.href =
"mailto:[email protected]?subject=Subject&body=message%20goes%20here";
打开要知道,没有单一,标准的方式,其中浏览器/电子邮件 客户端处理mailto链接(例如主题和身体领域可能 丢弃与出警告)。此外,还有一种风险是弹出窗口和广告拦截器,反病毒软件等可能会悄悄阻止mailto链接的强制开启 。
答
这里是一个工作示例: ASP页:
<tr>
<td>
<asp:Label ID="lblEmail" runat="server" Text="Email: "></asp:Label>
</td>
<td>
<asp:hyperlink id="lnkEmail1" runat="server" navigateurl="mailto:[email protected]?subject=MessageTitle&body;=MessageContent" target="" text="" xmlns:asp="#unknown"/>
</td>
</tr>
C#:
//call this in !ispostback in page_load
protected void BuildEmailAsLink()
{
//Email is different because we have to make the link clickable.
//navigateurl="mailto:[email protected]?subject=MessageTitle&body=MessageContent"
var email = lnkEmail1.Text;
//Only need to load the email address once on pageload. otherwise reuse it from the UI.
if (!string.IsNullOrEmpty(email) && (email.Length > 1) && email.Contains("@"))
{
//continue;
}
else
{
email = lnkEmail1.Text.Trim();
}
if (string.IsNullOrEmpty(email) == false)
{
lnkEmail1.NavigateUrl = lnkEmail1.NavigateUrl.Replace("[email protected]", email);
lnkEmail1.NavigateUrl = lnkEmail1.NavigateUrl.Replace("MessageTitle", "Reaching Out");
lnkEmail1.NavigateUrl = lnkEmail1.NavigateUrl.Replace("MessageContent",
string.IsNullOrEmpty(lblFirstName.Text.Trim()) == false
? string.Format("Hi {0},", lblFirstName.Text.Trim())
: "Hi,");
lnkEmail1.Text = email;
lnkEmail1.Visible = true;
}
}
ClientScript.RegisterStartupScript(this.GetType(), “电子邮件地址”,“parent.location = 'mailto:“+ email +”?subject =“+”rappel“+”&body =“+”message%20goes%20here“+”'“,true); –
我在后端c#中使用了这个,效果很好,谢谢你Roe –