2013-08-03 34 views
0

我无法理解一个事实... 我创建了一个表单来发送电子邮件,它非常好。 现在我已经扩展了ajax控件工具包的扩展html文本框,并且当我收到电子邮件时,我没有看到所有的代码...我举个例子。 我已将此:ASP.NET C#在电子邮件中插入Html代码

<table><tbody><tr><td rowspan="2"> </td><td><b>LA QUALITA' ALPITOUR</b></td></tr><tr><td> </td></tr></tbody></table>

,并在电子邮件我只看到文字加粗了,其他所有的代码编写,并可见......为什么? 我希望我已经解释了我的问题......我不是英语,我写得也不好。

如果需要的话,这是我的后台代码:

protected void Btn_SendMail_Click(object sender, EventArgs e) 
{ 
    MailMessage msg = new MailMessage(); 
    msg.From = new MailAddress("[email protected]"); 
    msg.To.Add("[email protected]"); 
    msg.Subject = txtSubject.Text; 
    msg.IsBodyHtml = true; 
    msg.Body = txtBody.Text; 
    SmtpClient sc = new SmtpClient("smtp.gmail.com"); 
    sc.Port = 25; 
    sc.Credentials = new NetworkCredential("[email protected]", "Dead2006!"); 
    sc.EnableSsl = true; 
    sc.Send(msg); 
    Response.Write("<script>alert('ennamo');</script>"); 
} 

,这是我的HTML/ASP代码:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 
<span class="fontS">A: 
    <asp:TextBox ID="txtTo" runat="server" Font-Size="X-Small" ReadOnly="True">Tutti Gli Utenti</asp:TextBox> 
    <br /> 
    Oggetto: 
    <asp:TextBox ID="txtSubject" runat="server" Font-Size="X-Small" /><br /> 
    <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
    </span> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <span class="fontS">Tipo di Email:</span><asp:DropDownList ID="DropDownList1" runat="server" Font-Size="X-Small" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> 
      <asp:ListItem Selected="True">Testo Libero</asp:ListItem> 
      <asp:ListItem>Email Con Offerte</asp:ListItem> 
     </asp:DropDownList> 
     <br /> 
     <asp:CheckBoxList ID="CheckBoxList1" runat="server" Visible="False" AutoPostBack="True" OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged"> 
     </asp:CheckBoxList> 
     <br /> 
     <asp:TextBox ID="txtBody" runat="server" Height="550px" TextMode="MultiLine" Width="900px" /> 
     <asp:HtmlEditorExtender ID="txtBody_HtmlEditorExtender" runat="server" TargetControlID="txtBody" EnableSanitization="False"> 
     </asp:HtmlEditorExtender> 
    </ContentTemplate> 
</asp:UpdatePanel> 
<br /> 
<asp:Button ID="Btn_SendMail" runat="server" OnClick="Btn_SendMail_Click" Text="Invia" /><br /> 

谢谢您的回答!

+0

如果你的电子邮件程序(用于查看电子邮件)理解HTML的邮件,那么你不会看到所有HTML标记 - 它将用于呈现图像的内容。 – Tim

回答

3

您需要将电子邮件的内容类型定义为text/html,并使用AlternateView,您可以将电子邮件作为文本和html发送。你只需要添加的text/htmlContentType作为不同的观点,这样的:

protected void Btn_SendMail_Click(object sender, EventArgs e) 
{ 
    MailMessage msg = new MailMessage(); 

    ContentType mimeType = new System.Net.Mime.ContentType("text/html"); 
    // Decode the html in the txtBody TextBox...  
    string body = HttpUtility.HtmlDecode(txtBody.Text); 
    AlternateView alternate = AlternateView.CreateAlternateViewFromString(body, mimeType); 
    msg.AlternateViews.Add(alternate); 

    msg.From = new MailAddress("[email protected]"); 
    msg.To.Add("[email protected]"); 
    msg.Subject = txtSubject.Text; 
    msg.IsBodyHtml = true; 
    msg.Body = body; 
    SmtpClient sc = new SmtpClient("smtp.gmail.com"); 
    sc.Port = 25; 
    sc.Credentials = new NetworkCredential("[email protected]", "Dead2006!"); 
    sc.EnableSsl = true; 
    sc.Send(msg); 
    Response.Write("<script>alert('ennamo');</script>"); 
} 
+0

谢谢你的回答,我会问你: CreateAlternateViewFromString(body,mimeType)< - body是? 然后它说我:“ContentTyoe是'属性',但它被用作'类型' – ProtoTyPus

+0

解释OP代码和你的建议之间的区别将使这个很好的答案,并帮助未来可能面临类似问题的读者。 – Tim

+0

然而,它不工作...我总是有同样的问题... – ProtoTyPus