Отправить HTML-письмо через C # с помощью SmtpClient
Как отправить HTML-письмо? Я использую код в этом ответе для отправки писем с помощью SmtpClient
, но они всегда являются обычным текстом, поэтому ссылка в приведенном ниже примере сообщения не отформатирована как таковая.
Welcome to SiteName. To activate your account, visit this URL: http://SiteName.com/a?key=1234.
Как включить HTML в отправляемые сообщения электронной почты?
- Как отправить электронную почту с помощью простых команд SMTP через Gmail?
- Могу ли я тестировать SmtpClient перед вызовом client.Send ()?
- Не удается выполнить авторизацию в Gmail smtp через MailMessage & smtpClient
- Как установить имя пользователя и пароль для объекта SmtpClient в .NET?
- System.Net.Mail создает недействительные электронные письма и файлы eml? Вставка дополнительных точек в имена хостов
- Отправляйте e-mail через SMTP с помощью C #
- c # Класс SmtpClient, не способный отправлять электронную почту с помощью gmail
- C # отправка писем со встроенными изображениями с использованием SmtpClient
- отправка почты с сетевыми учетными данными как истина в форме Windows не работает
- Как отправить электронное письмо с помощью C # через Gmail
- Как проверить учетные данные smtp перед отправкой почты?
- Каковы наилучшие методы использования SmtpClient, SendAsync и Dispose в .NET 4.0
- SmtpClient с Gmail
Вот что я делаю:
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()); }