2010-03-31 118 views
15

我正在測試通過C#發送一些電子郵件,但我不知道設置IsBodyHtmltrue有什麼影響。無論價值如何,無論我在身體中發送的內容是「text/plain」的內容類型,我的HTML都會在我的電子郵件客戶端(gmail)中顯示標籤和全部內容。那旗子實際上應該做什麼?MailMessage.IsBodyHtml做什麼?

注意:我可以通過創建一個內容類型爲「text/html」的AlternateView來發送HTML電子郵件,我只想了解如何設置身體應該工作。

回答

17

這裏是我的SMTP幫助我每天使用的摘錄....

public bool SendMail(string strTo, string strFrom, string strCc, string strBcc, string strBody, string strSubject) 
{ 

    bool isComplete = true; 

    SmtpClient smtpClient = new SmtpClient(); 
    MailMessage message = new MailMessage(); 

    try 
    { 
     //Default port will be 25 
     smtpClient.Port = 25; 

     message.From = new MailAddress(smtpEmailSource); 
     message.To.Add(strTo); 
     message.Subject = strSubject; 

     if (strCc != "") { message.Bcc.Add(new MailAddress(strCc)); } 
     if (strBcc != "") { message.Bcc.Add(new MailAddress(strBcc)); } 

     message.IsBodyHtml = true; 

     string html = strBody; //I usually use .HTML files with tags (e.g. {firstName}) I replace with content. This allows me to edit the emails in VS by opening a .HTML file and it's easy to do string replacements. 

     AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, new ContentType("text/html")); 

     message.AlternateViews.Add(htmlView); 


     // Send SMTP mail 
     smtpClient.Send(message); 
    } 
    catch 
    { 
     isComplete = false; 
    } 

    return isComplete; 
} 

[更新]

要點是我最初離開......

  1. IsBodyHtml聲明您的郵件是HTML格式的。如果您只發送HTML的單一視圖,這就是您所需要的。

  2. AlternateView用於存儲我的HTML,這不是發送HTML消息所必需的,但如果您想發送包含HTML和純文本的消息,以防接收方無法呈現HTML,則這是必需的。

我拿出Plainview的上方,這不明擺着,對不起......

這裏的關鍵是,如果你想發送HTML格式的郵件,你需要使用IsBodyHtml =真(默認爲false)將您的內容呈現爲HTML。

+0

這實際上是我所做的。我只是好奇,如果將IsBodyHtml設置爲true而不是使用AlternateView將HTML分配給正文,應該發生什麼。 – 2010-04-01 14:01:41

+0

我假設Body屬性只是'AlternateView'和'IsBodyHTML true/false'之間的一個快捷方式,您指定'Body'是明文或HTML。如果您只想發送一個RTF格式的正文,則無法使用正文屬性,您必須創建一個備用視圖,以便可以指定RTF的內容類型。 – 2014-08-09 03:41:37

15

我只是與這個相同的問題摔跤。我最好的解決方案是完全避免設置MailMessage對象的Body屬性。相反,只需添加兩個AlternateView,首先是純文本,然後是HTML。請務必首先添加純文本版本,因爲MIME標準說明如下:

格式的排列順序是它們對原始文件的忠實度,最不忠實的第一個和最忠實的最後一個。

這意味着,您將純文本版本放在第一位,因此客戶端應儘可能使用HTML版本。

-2

IsBodyHtml - 指定body是否包含文本或HTML標記。

正文包含應由IsBodyHtml識別的文本或html標記。