MailMessage.IsBodyHtml做什么?

时间:2010-03-31 19:18:37

标签: .net email html-email

我正在测试通过C#发送一些电子邮件,但我无法确定将IsBodyHtml设置为true的效果。无论价值如何,我在Body中发送的内容都显示内容类型为“text / plain”,而我的HTML显示标签以及所有在我的电子邮件客户端(gmail)中。那个标志究竟应该做什么?

注意:我可以通过创建内容类型为“text / html”的AlternateView来发送HTML电子邮件,我只想了解设置正文的工作方式。

3 个答案:

答案 0 :(得分:18)

以下是我每天使用的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;
}

<强> [UPDATE]

我最初离开的关键点......

  1. IsBodyHtml声明您的邮件是HTML格式的。如果您只发送一个HTML视图,这就是您所需要的。

  2. AlternateView用于存储我的HTML,这不是发送HTML消息所必需的,但如果您想发送包含HTML和纯文本的消息,则需要它,以防接收者无法呈现HTML

  3. 我拿出了上面的plainView,所以这不明显,对不起......

    这里的关键是,如果要发送HTML格式的消息,则需要使用IsBodyHtml = true(默认为false)将内容呈现为HTML。

答案 1 :(得分:15)

我只是在解决同样的问题。我最好的解决方案是避免设置Body对象的MailMessage属性。相反,只需添加两个AlternateView,首先是纯文本,然后是HTML。确保首先添加纯文本版本,因为MIME标准说:

  

这些格式是按照他们对原作的忠诚度来排序的,其中最忠实的第一个和最忠实的最后一个。

这意味着,您首先放置纯文本版本,因此客户端应尽可能使用HTML版本。

答案 2 :(得分:-3)

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

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