2013-08-03 39 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