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结合起来才能使用它。

See this Answer

如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链接的强制开启 。

+0

ClientScript.RegisterStartupScript(this.GetType(), “电子邮件地址”,“parent.location = 'mailto:“+ email +”?subject =“+”rappel“+”&body =“+”message%20goes%20here“+”'“,true); –

+1

我在后端c#中使用了这个,效果很好,谢谢你Roe –

这里是一个工作示例: 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; 
     } 
    }