티스토리 뷰



C# 닷넷으로 응용 프로그램을 개발하다 보면 프로그램의 효용성은 프로그램 외부와 얼마나 자연스러운 소통을 할 수 있는가와 직결되는 경우가 많습니다. 그 중의 하나가 이메일 전송입니다. 작업 과정의 내용을 자동으로 또는 요구 즉시 바로 이메일로 전송해준다면 사용자 입장에서는 매우 유용한 기능일 것입니다.

닷넷 시스템에서는 이런 기능이 내장되어 있어서 동기식 또는 비동기식으로 메일을 전송할 수 있습니다.

메일이 전송되는 과정을 살펴보면 응용 프로그램에서는 개발자가 설정한 송신측 메일 서버에 메일 전송 서비스로 접속해서 메일 내용과 송신 메일 주소와 수신 메일 주소등을 보안 기반(SSL)으로 전송하는 것으로 전송 작업은 끝납니다. 물론 메일 전송 서비스를 사용하려면 해당 서버에 아이디와 비밀번호가 있어야 합니다. 구글/네이버 메일 서버의 경우에는 메일에 로그인해서 "환경설정"을 보면 IMAP/SMTP 와 POP3/SMTP 사용 여부를 설정하는 곳이 있는데 아래의 코드를 적용하려면 IMAP/SMTP 사용 여부를 "사용"으로 설정하고 작업을 진행해야 합니다. 자체 메일 서버를 사용한다면 SSL을 사용하는 SMTP 서비스를 가동시켜야 합니다.

using System.Net.Mail;

//Send mail
String retmsg = "OK";
int sendport;
if (!int.TryParse(mailinfo["port"], out sendport)) sendport = 0;
SmtpClient client = new SmtpClient(mailinfo["server"], sendport);
client.UseDefaultCredentials = false; 
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Credentials = new System.Net.NetworkCredential(mailinfo["svrid"], mailinfo["svrpw"]);

MailAddress fromaddr = new MailAddress(mailinfo["frommail"], mailinfo["fromname"], 
                                                            System.Text.Encoding.UTF8);
MailAddress toaddr = new MailAddress(mailinfo["tomail"]);

MailMessage mailmsg = new MailMessage(fromaddr, toaddr);

mailmsg.Body = msg;
mailmsg.Body += Environment.NewLine;
mailmsg.BodyEncoding = System.Text.Encoding.UTF8;
mailmsg.Subject = titlemsg;
mailmsg.SubjectEncoding = System.Text.Encoding.UTF8;

try
{
    client.Send(mailmsg);
    mailmsg.Dispose();
}
catch (Exception ex)
{
    retmsg = ex.ToString();
}

mailinfo는 메일 전송에 필요한 옵션을 가지고 있는 사전 오브젝트로 "Dictionary<string, string> mailinfo = new Dictionary<string, string>();"와 같이 정의 했으며 필요한 개별 옵션의 내용은 아래와 같습니다. 원리는 같은데 네이트(엠파스)와 다음은 잘 되지 않더군요.

    • server=송신측 메일 서버 도메인
      smtp.gmail.com 또는 smtp.naver.com

    • port=SSL SMTP 서비스 포트 
      구글과 네이버 모두 587을 사용합니다.

    • svrid=사용자 아이디
      구글의 경우 통상 이메일 주소를 아이디로 사용하고 네이버는 아이디만 입력합니다.

    • svrpw=사용자 비밀번호
      구글 및 네이버의 로그인 비밀번호

    • frommail=송신자 이메일 주소

    • fromname=송신자 이름

    • tomail=수신자 이메일 주소



댓글
댓글쓰기 폼