성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>C# - smtp.daum.net 서비스(Implicit SSL)를 이용해 메일 보내는 방법</h1> <p> 다음(Daum) 메일을 위한 SMTP 설정은 홈페이지에 접속 후 아래의 경로를 통해 확인할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > IMAP / SMTP 설정값 안내 ; <a target='tab' href='https://mail.daum.net/#setting/POP3IMAP'>https://mail.daum.net/#setting/POP3IMAP</a> </pre> <br /> 위의 설정을 바탕으로 지난 글의 소스 코드에서 사용한,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Azure 가상 머신(VM)에서 SMTP 메일 전송하는 방법 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/11994'>http://www.sysnet.pe.kr/2/0/11994</a> </pre> <br /> SmtpClient를 이용하면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > smtp.Host = "smtp.daum.net"; smtp.Port = 465; smtp.EnableSsl = true; smtp.Credentials = new NetworkCredential("...", "..."); </pre> <br /> 다음과 같은 식으로 timed-out 예외가 발생합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Unhandled Exception: System.Net.Mail.SmtpException: The operation has timed out. at System.Net.Mail.SmtpClient.Send(MailMessage message) at Program.Main(String[] args) in c:\temp\ConsoleApp1\Program.cs:line 23 </pre> <br /> 검색해 보면 이것은 daum 측의 메일 서버가 ("Explicit SSL"이 아닌) "Implicit SSL"을 사용하기 때문이라고 하며, 이 방식은 근래에 잘 사용하지 않는다고 합니다. 두 가지 방식의 차이점은 아래의 자료에서,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > INFO: TLS/SSL implicit and explicit modes difference ; <a target='tab' href='https://www.rebex.net/kb/tls-ssl-explicit-implicit/'>https://www.rebex.net/kb/tls-ssl-explicit-implicit/</a> </pre> <br /> 자세한 설명과 함께 포트 정리까지 잘 다루고 있습니다.<br /> <br /> [표 출처: <a target='tab' href='https://www.rebex.net/kb/tls-ssl-explicit-implicit/'>https://www.rebex.net/kb/tls-ssl-explicit-implicit/</a>]<br /> <img alt='smtp_implicit_ssl_1.png' src='/SysWebRes/bbs/smtp_implicit_ssl_1.png' /><br /> <br /> 따라서 C#에서 Daum 메일 서비스를 이용하려면 "Implicit SSL"을 사용해야 하는데 아쉽게도 System.Net.Mail.SmtpClient는 "Explicit SSL" 방식만 지원한다고 합니다. 이 문제를 해결하기 위해 검색해 보면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > smtp 사용 - 막 검색해도 답이 안나와요 ; <a target='tab' href='http://cafe.daum.net/aspdotnet/5wZX/4461'>http://cafe.daum.net/aspdotnet/5wZX/4461</a> </pre> <br /> CDO COM 객체를 이용하면 된다고 합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > GMail SMTP via C# .Net errors on all ports ; <a target='tab' href='https://stackoverflow.com/questions/1082216/gmail-smtp-via-c-sharp-net-errors-on-all-ports/3845907#3845907'>https://stackoverflow.com/questions/1082216/gmail-smtp-via-c-sharp-net-errors-on-all-ports/3845907#3845907</a> </pre> <br /> 하지만 그보다는 다음의 글에서 제시한,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C# send email using implicit ssl ; <a target='tab' href='https://stackoverflow.com/questions/8878309/c-sharp-send-email-using-implicit-ssl'>https://stackoverflow.com/questions/8878309/c-sharp-send-email-using-implicit-ssl</a> System.Net.Mail with SSL to authenticate against port 465 ; <a target='tab' href='https://learn.microsoft.com/en-us/archive/blogs/webdav_101/system-net-mail-with-ssl-to-authenticate-against-port-465'>https://learn.microsoft.com/en-us/archive/blogs/webdav_101/system-net-mail-with-ssl-to-authenticate-against-port-465</a> </pre> <br /> System.Web.Mail의 MailMessage와 SmtpMail 객체를 이용하는 것이 더 낫습니다. 결국, smtp.daum.net을 이용한 코드를 다음과 같이 정리할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > using System.Web.Mail; // System.Web 어셈블리 참조 필요 class Program { static void Main(string[] args) { #pragma warning disable 0618 System.Web.Mail.MailMessage msg = new System.Web.Mail.MailMessage(); msg.Body = "Test is good"; msg.Subject = "Test mail"; msg.To = "from@chol.net"; msg.From = "to@hanmail.net"; int cdoBasic = 1; msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", true); msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 465); msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", cdoBasic); msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "...[다음_사용자_계정]..."); msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "...[다음_사용자_암호]..."); SmtpMail.SmtpServer = "smtp.daum.net"; SmtpMail.Send(msg); #pragma warning restore 0618 } } </pre> <br /> <hr style='width: 50%' /><br /> <br /> 그나저나, SmtpClient/SmtpMail 클래스를 다루면서 알게 된 사실이라면 국내 메일 서비스가 은근히 발전 속도가 느리다는 점입니다. daum의 경우에는 그나마 괜찮지만, 천리안 같은 경우에는 여전히 SMTP/POP3에 SSL 연결을 지원하지 않는 데다,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Outlook에 설정한 SMTP/POP3(예:천리안 메일) 계정 암호를 잊어버린 경우 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/11010'>http://www.sysnet.pe.kr/2/0/11010</a> </pre> <br /> 심지어 홈페이지조차도 HTTPS를 지원하지 않습니다. 심각하군요... ^^; 이제 서서히 천리안을 떠날 때가 된 것 같습니다. ^^<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1094
(왼쪽의 숫자를 입력해야 합니다.)