Enviar correo electrónico HTML a través de C # con SmtpClient

¿Cómo envío un correo electrónico HTML? Utilizo el código en esta respuesta para enviar correos electrónicos con SmtpClient , pero siempre son texto sin formato, por lo que el enlace en el siguiente mensaje de ejemplo no está formateado como tal.

 

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

¿Cómo habilito HTML en los mensajes de correo electrónico que envío?

Esto es lo que hago:

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

Tenga en cuenta que configuro el mensaje de correo html como verdadero: mail.IsBodyHtml = true;

Creo que fue algo así como:

 mailObject.IsBodyHtml = true; 

IsBodyHtml = true es, sin duda, la parte más importante.

Pero si desea proporcionar un correo electrónico con una parte de texto / sin formato y una parte de texto / html compuesta como alternativas, también es posible usar la clase 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 

Aplica la encoding correcta de Mailbody.

 mail.IsBodyHtml = true; 

Tengo una idea, puede agregar una checkbox a su proyecto para enviar un correo electrónico como html como una opción para el usuario, y agregue este código para habilitarlo:

  MailMessage mail = new MailMessage(from, to, subject, message); if(checkBox1.CheckState == CheckState.Checked ) { mail.IsBodyHtml = true; } SmtpClient client = new SmtpClient("localhost"); client.Send(mail); 

Si está utilizando Mailkit , podemos usar TextBody, HtmlBody y Both para el cuerpo del mensaje. Solo escribe este código Esto te ayudará

  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"; 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()); }