51

如何发送 HTML 电子邮件?我使用此答案中的代码发送带有 的电子邮件SmtpClient,但它们始终是纯文本,因此下面示例消息中的链接不是这样格式化的。

<p>Welcome to SiteName. To activate your account, visit this URL: <a href="http://SiteName.com/a?key=1234">http://SiteName.com/a?key=1234</a>.</p>

如何在我发送的电子邮件中启用 HTML?

4

6 回答 6

100

这就是我所做的:

MailMessage mail = new MailMessage(from, to, subject, message);
mail.IsBodyHtml = true;
SmtpClient client = new SmtpClient("localhost");
client.Send(mail);

请注意,我将邮件消息 html 设置为 true:mail.IsBodyHtml = true;

于 2009-08-25T18:02:38.607 回答
20

我相信它是这样的:

mailObject.IsBodyHtml = true;
于 2009-08-25T18:01:45.473 回答
19

IsBodyHtml = true无疑是最重要的部分。

但是,如果您想提供一封同时包含 text/plain 部分和 text/html 部分的电子邮件,也可以使用AlternateView该类:

MailMessage msg = new MailMessage();
AlternateView plainView = AlternateView
     .CreateAlternateViewFromString("Some plaintext", Encoding.UTF8, "text/plain");
// We have something to show in real old mail clients.
msg.AlternateViews.Add(plainView); 
string htmlText = "The <b>fancy</b> part.";
AlternateView htmlView = 
     AlternateView.CreateAlternateViewFromString(htmlText, Encoding.UTF8, "text/html");
msg.AlternateViews.Add(htmlView); // And a html attachment to make sure.
msg.Body = htmlText;  // But the basis is the html body
msg.IsBodyHtml = true; // But the basis is the html body
于 2014-12-10T23:54:32.057 回答
8

应用 Mailbody 的正确编码。

mail.IsBodyHtml = true;
于 2009-08-25T18:01:32.277 回答
1

我有一个想法,您可以在项目中添加一个复选框,以将电子邮件作为 html 作为用户选项发送,并添加此代码以启用它:

         MailMessage mail = new MailMessage(from, to, subject, message);

         if(checkBox1.CheckState == CheckState.Checked )
           {
               mail.IsBodyHtml = true;
           }

         SmtpClient client = new SmtpClient("localhost");

         client.Send(mail);
于 2014-03-11T18:22:48.880 回答
0

如果您使用Mailkit,我们可以使用 TextBody、HtmlBody 和 Both 作为消息正文。只需编写此代码。它会帮助你

            MimeMessage mailMessage = new MimeMessage();
            mailMessage.From.Add(new MailboxAddress(senderName, sender@address.com));
            mailMessage.Sender = new MailboxAddress(senderName, sender@address.com);
            mailMessage.To.Add(new MailboxAddress(emailid, emailid));
            mailMessage.Subject = subject;
            mailMessage.ReplyTo.Add(new MailboxAddress(replyToAddress));
            mailMessage.Subject = subject;
            var builder = new BodyBuilder();
            builder.HtmlBody = "Hello There";
            mailMessage.Body = builder.ToMessageBody();            
            try
            {
                using (var smtpClient = new SmtpClient())
                {
                    smtpClient.Connect("HostName", "Port", MailKit.Security.SecureSocketOptions.None);
                    smtpClient.Authenticate("user@name.com", "password");

                    smtpClient.Send(mailMessage);
                    Console.WriteLine("Success");
                }
            }
            catch (SmtpCommandException ex)
            {
                Console.WriteLine(ex.ToString());              
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());                
            }
于 2018-08-09T11:26:44.103 回答