C# .net core 에서 카카오워크, 다음, 카카오에서 메일의 SMTP 서버를 이용해서 메일을 발송하려 하는데,
timeout error 만 나오고 메일 발송이 되지 않는다.
C# .net core 에서 smtp 발송의 경우
Sytem.Net.Mail 을 사용해서 발송하는데 naver, google 의 경우 smtp 587 포트를 사용하는
Explicit SSL 방식을 사용하는데
카카오, 다음, 카카오워크의 경우 smtp 465 포트를 사용하는
Implicit SSL 방식을 사용하기 때문에 다르게 처리해야 한다.
(현재는 많이 사용하지 않는 방식을 아직도 사용하는데 조금 안타깝다.)
우선, 일반적인 naver, google 의 메일 발송 소소를 알려드리면
using System.Net.Mail;
MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress("발신자이메일", "발신자이름", Encoding.UTF8);
mailMessage.To.Add("수신자이메일");
mailMessage.CC.Add("참조자이메일");
mailMessage.Bcc.Add("숨은참조자이미엘");
mailMessage.Subject = "메일제목";
mailMessage.SubjectEncoding = Encoding.UTF8;
mailMessage.Body = "본문내용";
mailMessage.IsBodyHtml = true;
mailMessage.BodyEncoding = Encoding.UTF8;
//mailMessage.Attachments.Add(new Attachment(new FileStream(@"D:\test.zip", FileMode.Open, FileAccess.Read), "test.zip"));
SmtpClient smtpServer = new SmtpClient("smtp.naver.com");
smtpServer.Port = 587;
smtpServer.EnableSsl = true;
smtpServer.UseDefaultCredentials = false;
smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpServer.Credentials = new System.Net.NetworkCredential("네이버아이디", "네이버암호");
smtpServer.Send(mailMessage);
smtpServer.Dispose();
mailMessage.Dispose();
즉, 기본적인 Sytem.Net.Mail 을 이용해서 발송한다.
그럼, 다음, 카카오, 카카오워크는
별도의 패키지를 설치해서 사용하면 해결이 된다.
"MailKit" 패키지 설치하자. (AIM 패키지 사용하는 방법이 있지만...net core, net8 에서는 작동이 안된다?)
아무튼 시간이 없으신 개발자 분들을 위해서 바로 참고 소스 알려드리자면
string fromEmail = "발송자이메일";
string toEmail = "수신자이메일";
string subject = "메일제목;
string body = "본문내용";
var message = new MimeKit.MimeMessage();
message.From.Add(new MimeKit.MailboxAddress("", fromEmail));
message.To.Add(new MimeKit.MailboxAddress("",toEmail ));
message.Subject = subject;
var bodyBuilder = new MimeKit.BodyBuilder();
bodyBuilder.HtmlBody = body;
message.Body = bodyBuilder.ToMessageBody();
using (var smtpClient = new MailKit.Net.Smtp.SmtpClient())
{
smtpClient.Connect("smtp.kakao.com", 465, MailKit.Security.SecureSocketOptions.Auto);
smtpClient.Authenticate("카카오메일아이디", "카카오smtp암호");
smtpClient.Send(message);
smtpClient.Disconnect(true);
}
단, 선행작업으로 네이버, 구글, 다음 등 메일 환경설정에서 imap 사용 활성화
(구글의 경우 2차 인증 처리 등) 작업을 해야 하는데,
해당 내용은 다른 블로거를 참고하면 많이 나오니 찾아보면 좋을 거 같다.
저처럼 시간 없는 개발자들에게 좋은 꿀팁이 되었으면 합니다.
카카오 그룹에 다른 메이져 IT 회사 보다 뒤쳐지는 느낌을 지울 수 없는데 좀 더 노력해 주었으면 하는 바람이다.
'팁 & 노하우 > C#' 카테고리의 다른 글
C#, .net 8, core, MVC HttpResponseMessage XML to JSON 변환 (0) | 2024.02.29 |
---|---|
Vue js 3, v-html button click event 처리 (버튼 클릭 이벤트) (0) | 2024.02.26 |
영화진흥위원회 오픈API 활용 C#, .net 8.0, MVC, Vue.js (0) | 2024.02.20 |
C# 날짜 시간 변환 format 과 DateTime.ParseExact 만 알면 뭐든지 해결 (0) | 2023.11.06 |
c# 반복문 foreach, for 에서 인덱스 번호 가져오기 (0) | 2023.11.02 |