我正在测试通过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