Отправить HTML письмо по электронной почте через C # с SmtpClient - PullRequest
44 голосов
/ 25 августа 2009

Как мне отправить электронное письмо в формате 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 в сообщениях электронной почты, которые я отправляю?

Ответы [ 6 ]

90 голосов
/ 25 августа 2009

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

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

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

18 голосов
/ 25 августа 2009

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

mailObject.IsBodyHtml = true;
16 голосов
/ 11 декабря 2014

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

Но если вы хотите предоставить электронное письмо как с текстовой / простой частью, так и с текстовой / 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
8 голосов
/ 25 августа 2009

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

mail.IsBodyHtml = true;
1 голос
/ 11 марта 2014

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

Если вы используете 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";            
            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());                
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...