제목 : [실습 99-1] ASP.NET에서 핫메일(@live.com) SMTP사용하여 메일 전송하기
참고2
ASP.NET에서 메일을 보낼 때 자체 메일서버가 아닌 공인된 메일 서버를 통해서 메일을 보내고자할 때에는 라이브메일(live.com) 또는 지메일(gmail.com)의 SMTP 서비스를 사용하여 보낼 수도 있다.
[실습 99-1] ASP.NET에서 핫메일(@live.com) SMTP사용하여 메일 전송하기
소개
이번 코드 샘플은 ASP.NET에서 핫메일 즉, 라이브메일의 SMTP 정보를 사용하여 메일을 전송하는 방법이다.
기본적으로 ASP.NET에서 메일을 전송하려면, Windows Server 2003 또는 2008에 호스팅되어 자체 SMTP를 사용하여 메일을 전송할 수 있다.
하지만, 대부분의 개인적인인 서버의 공인 IP에서 보내지는 메일은 스팸 처리되어 제대로 전송되지 않는 경우가 많다.
이러한 문제를 해결하기 위해서 공인된 메일 전송 서버인 라이브닷컴 또는 지메일과 같은 서비스의 SMTP를 활용하는 것이 하나의 좋은 방법이 될 수 있다.
아래 코드는 자체 SMTP가 아닌 라이브계정을 사용하여 메일을 전송하는 초간단 코드를 제시한다.
따라하기
(1) Visual Studio 2012를 사용하여 WebMail 웹 사이트를 생성 또는 이미 만들어져 있다면 웹 사이트 열기 메뉴를 사용하여 WebMail 웹 사이트를 연다.
(2) FrmSendMailWithHotMail.aspx란 이름으로 웹 폼을 생성한 후 아래와 같이 디자인 코드를 작성한다.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmSendMailWithHotMail.aspx.cs"
Inherits="FrmSendMailWithHotMail" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>핫메일을 사용한 메일 전송</title>
</head>
<body>
<form id="form1" runat="server">
<div>
핫메일 아이디 :
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
<br />
핫메일 암호 :
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
<br />
<asp:Button ID="btnSendMail" runat="server" Text="핫메일을 사용한 메일 전송(@live.com)"
onclick="btnSendMail_Click" />
</div>
</form>
</body>
</html>
(3) FrmSendMailWithHotMail.aspx.cs 코드비하인드 파일로 이동하여 btnSend 버튼에 대한 Click 이벤트 처리기에 아래와 같이 코드를 작성한다.
using System;
using System.Net;
using System.Net.Mail;
public partial class FrmSendMailWithHotMail : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSendMail_Click(object sender, EventArgs e)
{
// MailMessage 클래스를 사용하여 메일 전송 관련 정보 기록
MailMessage objMail = new MailMessage();
objMail.From = new MailAddress("rednuke@naver.com");
objMail.To.Add("rednuke@naver.com");
objMail.Subject = "라이브메일을 통해서 메일 보내기";
objMail.Body = "정상적으로 도착했습니다.";
objMail.SubjectEncoding = System.Text.Encoding.Default;
objMail.BodyEncoding = System.Text.Encoding.Default;
// 핫메일 또는 지메일을 통한 메일 전송
SmtpClient objSend = new SmtpClient("smtp.live.com", 587);
objSend.Credentials =
new NetworkCredential(txtUserName.Text, txtPassword.Text);
objSend.DeliveryMethod = SmtpDeliveryMethod.Network;
objSend.EnableSsl = true;
objSend.Send(objMail);
Response.Write("메일을 전송하였습니다.");
}
}
위 코드 중 16번~17번 라인의 코드는 반드시 본인이 보내고 받는 이메일 주소를 정확히 입력해야 한다.
(4) FrmSendMailWithHotMail.aspx을 웹브라우저로 실행한 후 메일 전송버튼을 클릭한다.
(5) 첨부된 이미지 화면은 실제로 필자의 웹메일로 제대로 전송된 화면을 보여준다. 참고로, 테스트 환경은 Windows 7에 SMTP는 따로 구성되어져 있지 않았다.
마무리
이번 실습의 방법을 사용하면 손쉽게 공인된 메일 서버를 사용할 수 있다는 장점이 있다. 다만, 대량 메일을 전송하려면 이 방법보다는 자체 메일 서버를 구축하는 게 기본원칙임은 기억해야 한다.