MailMessage.IsBodyHtml是什么作用?

22
我正在通过C#发送电子邮件的测试,但我无法确定将IsBodyHtml设置为true会产生什么影响。无论该值是什么,我在正文中发送的内容都显示为"纯文本"的内容类型,并且我的HTML标签等内容在我的电子邮件客户端(Gmail)中显示。那个标志实际上应该做什么?
注意:我可以通过创建一个内容类型为"text/html"的AlternateView来成功发送HTML电子邮件,我只是想了解如何设置正文的工作原理。
3个回答

23

这是我每天使用的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 = true(默认值为false)将内容呈现为HTML。


这实际上也是我所做的。我只是好奇,如果我将HTML分配给IsBodyHtml设置为true的正文,而不是使用AlternateView,会发生什么。 - Eddie Deyo
我假设Body属性只是AlternateView的快捷方式,而在IsBodyHTML true/false之间,您正在指定Body是纯文本还是HTML。如果您想发送一个RTF格式的主体,您不能使用Body属性,您必须创建一个alternateview,以便您可以指定RTF的内容类型。 - The Muffin Man

18
我曾经遇到了同样的问题。我的最佳解决方案是尽量不要设置邮件消息对象的Body属性,而是添加两个AlternateView,首先是纯文本,然后是HTML。确保先添加纯文本版本,因为MIME标准规定:

这些格式按照它们对原始格式的忠实程度排序,最不忠实的放在最前面,最忠实的放在最后面。

这意味着,将纯文本版本放在第一位,以便客户端在可能情况下使用HTML版本。

-4

IsBodyHtml - 指定正文是否包含文本或HTML标记。

正文包含应由IsBodyHtml识别的文本或HTML标记。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接