What does MailMessage.IsBodyHtml do?

前端 未结 3 1726
情书的邮戳
情书的邮戳 2020-12-10 01:21

I\'m testing sending out some emails via C#, but I can\'t tell what effect setting IsBodyHtml to true has. Regardless of the value, whatever I sen

3条回答
  •  囚心锁ツ
    2020-12-10 02:02

    Here is an excerpt for my SMTP helper I use everyday....

    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]

    The key points as I originally left off...

    1. IsBodyHtml states that your message is HTML formatted. If you were only sending a single view of HTML, this is all you need.

    2. AlternateView is used to store my HTML, this is not required for sending a HTML message but it's required if you want to send a message that includes HTML and Plain Text, in case the receiver is unable to render the HTML.

    I took out my plainView above so this isn't obvious, sorry...

    The key here is that if you want to send a HTML formatted message you need to use IsBodyHtml = true (default is false) to have your content rendered as HTML.

提交回复
热议问题