/// <summary>
/// Live smtp서버 주소
/// </summary>
private const string LIVESMTP_SERVER = "smtp.live.com";
/// <summary>
/// Gmail smtp서버 주소
/// </summary>
private const string GMAILSMTP_SERVER = "smtp.gmail.com";
/// <summary>
/// SMTP포트
/// </summary>
private const int SMTPPORT = 587;
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
/// 전송버튼 이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSend_Click(object sender, EventArgs e)
{
MailAddress from = new MailAddress()
{
Email = "kdw8751@gmail.com",
DisplayName = "Dongwook"
};
MailAddress to = new MailAddress()
{
Email = txtToMailAddress.Text
};
bool isGmail = ddlSmtpList.SelectedValue == "1" ? true:false;
SendMail(txtTitle.Text, txtBody.Text, to, from, isGmail);
}
/// <summary>
/// 메일을 발송합니다.
/// </summary>
/// <param name="title">제목</param>
/// <param name="body">내용</param>
/// <param name="to">수신자</param>
/// <param name="from">발신자</param>
/// <param name="isGmail">Gmail Smtp 여부</param>
private void SendMail(string title, string body, MailAddress to, MailAddress from, bool isGmail)
{
// SmtpClient 변수 선언
SmtpClient smtp;
if (isGmail)
{
smtp = new SmtpClient(GMAILSMTP_SERVER, SMTPPORT);
// Gmail메일 ID/ Password 지정
smtp.Credentials = new NetworkCredential("Gmail아이디@gmail.com", "Gmail Password");
}
else
{
smtp = new SmtpClient(LIVESMTP_SERVER, SMTPPORT);
// Live메일 ID/ Password 지정
smtp.Credentials = new NetworkCredential("Live아이디@live.com", "Live Password");
}
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.EnableSsl = true;
MailMessage message = CreateDefaulMailMessage(from, to, title, body);
object userState = message;
// 비동기 이벤트
smtp.SendCompleted += new SendCompletedEventHandler(smtp_SendCompleted);
// 비동기 호출
smtp.SendAsync(message, userState);
// 동기호출
//smtp.Send(message);
}
/// <summary>
/// 비동기 호출 이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void smtp_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
if (e.Error != null)
return;
}
/// <summary>
/// 기본적인 메일 메세지를 생성하여 반환합니다.
/// </summary>
/// <param name="from">발신자 이메일</param>
/// <param name="to">수신자 이메일</param>
/// <param name="subject">메일 제목</param>
/// <param name="body">메일 본문</param>
/// <returns>메일 메세지 객체</returns>
private MailMessage CreateDefaulMailMessage(MailAddress from, MailAddress to, string subject, string body)
{
// 메일 메세지 객체 생성
MailMessage message = new MailMessage();
//// 보내는 사람
message.From = from.ConvertToBuiltInMailAddress();
// 수신자 지정합니다.
message.To.Add(to.ConvertToBuiltInMailAddress());
// 제목 인코딩
message.SubjectEncoding = System.Text.Encoding.UTF8;
// 제목
message.Subject = subject;
// 본문 인코딩
message.BodyEncoding = System.Text.Encoding.UTF8;
// 본문
message.Body = body;
// HTML 허용
message.IsBodyHtml = true;
// 우선순위
message.Priority = MailPriority.Normal;
return message;
}
}
/// <summary>
/// 메일 정보
/// </summary>
public class MailAddress
{
/// <summary>
/// 메일주소를 지정/반환합니다.
/// </summary>
public string Email { get; set; }
/// <summary>
/// 이름을 지정/반환합니다.
/// </summary>
public string DisplayName { get; set; }
/// <summary>
/// 빌트인 MailAddress 객체를 만들어 반환합니다.
/// </summary>
/// <returns></returns>
public System.Net.Mail.MailAddress ConvertToBuiltInMailAddress()
{
return new System.Net.Mail.MailAddress(this.Email, this.DisplayName);
}
}