我正在測試通過C#發送一些電子郵件,但我不知道設置IsBodyHtml
到true
有什麼影響。無論價值如何,無論我在身體中發送的內容是「text/plain」的內容類型,我的HTML都會在我的電子郵件客戶端(gmail)中顯示標籤和全部內容。那旗子實際上應該做什麼?MailMessage.IsBodyHtml做什麼?
注意:我可以通過創建一個內容類型爲「text/html」的AlternateView
來發送HTML電子郵件,我只想了解如何設置身體應該工作。
我正在測試通過C#發送一些電子郵件,但我不知道設置IsBodyHtml
到true
有什麼影響。無論價值如何,無論我在身體中發送的內容是「text/plain」的內容類型,我的HTML都會在我的電子郵件客戶端(gmail)中顯示標籤和全部內容。那旗子實際上應該做什麼?MailMessage.IsBodyHtml做什麼?
注意:我可以通過創建一個內容類型爲「text/html」的AlternateView
來發送HTML電子郵件,我只想了解如何設置身體應該工作。
這裏是我的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;
}
[更新]
要點是我最初離開......
IsBodyHtml聲明您的郵件是HTML格式的。如果您只發送HTML的單一視圖,這就是您所需要的。
AlternateView用於存儲我的HTML,這不是發送HTML消息所必需的,但如果您想發送包含HTML和純文本的消息,以防接收方無法呈現HTML,則這是必需的。
我拿出Plainview的上方,這不明擺着,對不起......
這裏的關鍵是,如果你想發送HTML格式的郵件,你需要使用IsBodyHtml =真(默認爲false)將您的內容呈現爲HTML。
我只是與這個相同的問題摔跤。我最好的解決方案是完全避免設置MailMessage
對象的Body
屬性。相反,只需添加兩個AlternateView
,首先是純文本,然後是HTML。請務必首先添加純文本版本,因爲MIME標準說明如下:
格式的排列順序是它們對原始文件的忠實度,最不忠實的第一個和最忠實的最後一個。
這意味着,您將純文本版本放在第一位,因此客戶端應儘可能使用HTML版本。
IsBodyHtml - 指定body是否包含文本或HTML標記。
正文包含應由IsBodyHtml識別的文本或html標記。
這實際上是我所做的。我只是好奇,如果將IsBodyHtml設置爲true而不是使用AlternateView將HTML分配給正文,應該發生什麼。 – 2010-04-01 14:01:41
我假設Body屬性只是'AlternateView'和'IsBodyHTML true/false'之間的一個快捷方式,您指定'Body'是明文或HTML。如果您只想發送一個RTF格式的正文,則無法使用正文屬性,您必須創建一個備用視圖,以便可以指定RTF的內容類型。 – 2014-08-09 03:41:37