programing

SmtpClient를 사용하여 C#을 통해 HTML 전자 메일 보내기

testmans 2023. 8. 18. 21:01
반응형

SmtpClient를 사용하여 C#을 통해 HTML 전자 메일 보내기

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을 활성화하려면 어떻게 해야 합니까?

제가 하는 일은 다음과 같습니다.

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 부분이 모두 포함된 이메일을 제공하려면 다음을 사용하는 것도 가능합니다.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

메일 본문의 올바른 인코딩을 적용합니다.

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

언급URL : https://stackoverflow.com/questions/1329922/send-html-email-via-c-sharp-with-smtpclient

반응형