Отправить HTML-письмо через C # с помощью SmtpClient

Как отправить HTML-письмо? Я использую код в этом ответе для отправки писем с помощью SmtpClient , но они всегда являются обычным текстом, поэтому ссылка в приведенном ниже примере сообщения не отформатирована как таковая.

 

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

Как включить HTML в отправляемые сообщения электронной почты?

Вот что я делаю:

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

Обратите внимание, что я установил почтовое сообщение html в true: mail.IsBodyHtml = true;

Я считаю, что это было что-то вроде:

 mailObject.IsBodyHtml = true; 

IsBodyHtml = true , несомненно, является самой важной частью.

Но если вы хотите предоставить электронное письмо как с текстовой / простой частью, так и с текстовой / html-частью, составленной в виде альтернатив, также возможно использование classа 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 fancy 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 

Примените правильную кодировку Mailbody.

 mail.IsBodyHtml = true; 

У меня есть идея, вы можете добавить флажок в свой проект для отправки электронной почты как 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); 

Если вы используете Mailkit , мы можем использовать TextBody, HtmlBody и Both для тела сообщения. Просто напишите этот код. Это поможет вам

  MimeMessage mailMessage = new MimeMessage(); mailMessage.From.Add(new MailboxAddress(senderName, [email protected])); mailMessage.Sender = new MailboxAddress(senderName, [email protected]); 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"; try { using (var smtpClient = new SmtpClient()) { smtpClient.Connect("HostName", "Port", MailKit.Security.SecureSocketOptions.None); smtpClient.Authenticate("[email protected]", "password"); smtpClient.Send(mailMessage); Console.WriteLine("Success"); } } catch (SmtpCommandException ex) { Console.WriteLine(ex.ToString()); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } 
Давайте будем гением компьютера.