Gmail SMTP를 이용한 Mail 전송 ASP.NET 웹 프로그램
Gmail Form
말은 상당히 거창하다 - _-;;
참고 주소는 http://aspalliance.com/867 요기를 보면되며..
사실 .NET을 해본 사람이라면 .NET에서 제공하는 SMTP메일 클라이언트를 이용해서 메일을 보내는 소스코드가 얼마나 간단히 나오는지 알 것이다.
이 예제도 마찬가지로 상당히 짧은 코드지만 Gmail의 SMTP를 이용해보려고 삽질(?)한 노력이 보일것이다;
하지만 결론부터 얘기하자면 실패했다는것 ㅠㅠ
Google Mail의 기본 SMTP 포트는 465로 되어있는 것을 확인했다.
하지만 메일이 전송되지 않길래 무슨문젤까 하고 google.com의 검색으로 외국을 긁어나가기 시작했다..
포트를 587로 바꾸라고? -_ -;;
바꿔서도 해봤다..
안된다 ㅠㅠ
누가 해결하신분은 도움을 주시길..
물론 gmail의 smtp를 안쓰고 로컬에 있는 iis의 smtp를 이용하면 간단히 해결되는 문제지만;;
목적이 gmail의 smtp를 훔쳐쓰는 것이기에 -ㅁ-;; ㅋㅋ
아래는 본인이 삽질(?)한 소스코드이다~
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>Google Form Mailer</title>
</head>
<body>
<form id="GMailForm" runat="server">
<div>
<table style="border-collapse:collapse;" width="400" cellpadding="5" cellspacing="0">
<tr>
<th colspan="2">
Google Form mail
</th>
</tr>
<tr>
<td style="width: 150px; text-align: right">
E-mail to :
</td>
<td>
<asp:TextBox ID="txtMailTo" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 150px; text-align: right">
Subject :</td>
<td>
<asp:TextBox ID="txtSubject" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 150px; text-align: right">
Contents :
</td>
<td>
<asp:TextBox ID="txtContents" runat="server" Rows="5" TextMode="MultiLine"></asp:TextBox></td>
</tr>
<tr>
<td align="center" colspan="2">
<asp:Button ID="btnMailSend" runat="server" OnClick="btnMailSend_Click" Text="Send mail" /></td>
</tr>
</table>
</div>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;using System.Net;
using System.Net.Mail;public partial class _Default : System.Web.UI.Page
{
/// <summary>
/// E-mail Message class
/// </summary>
private MailMessage Mail = null;/// <summary>
/// Network base authentication
/// </summary>
private NetworkCredential AuthInfo = null;/// <summary>
/// SMTP Mail Sender
/// </summary>
private SmtpClient Smtp = null;/// <summary>
/// Email address
/// </summary>
private string sMailFrom = "";/// <summary>
/// smtp login id
/// </summary>
private string sLoginID = "";/// <summary>
/// smtp login password
/// </summary>
private string sLoginPass = "";/// <summary>
/// Default Page load script
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
sMailFrom = "sunyruru@gmail.com";
sLoginID = "sunyruru";
sLoginPass = "****";
}/// <summary>
/// Mail Send button event script
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMailSend_Click(object sender, EventArgs e)
{
// Email message set
Mail = new MailMessage(sMailFrom, txtMailTo.Text.Trim());
Mail.Subject = txtSubject.Text;
Mail.Body = txtContents.Text;
// Authentication to SMTP Service
AuthInfo = new NetworkCredential(sLoginID.Trim() + "@gmail.com", sLoginPass.Trim());// SMTP Sender
Smtp = new SmtpClient();try
{
Smtp.Host = "smtp.google.com"; // SMTP Host
Smtp.Port = 465; // SMTP Port
Smtp.UseDefaultCredentials = false;
Smtp.Credentials = AuthInfo;
Smtp.EnableSsl = true; // Use SSL Secure connectionSmtp.Send(Mail); // Send email message
}
catch (System.Net.Mail.SmtpFailedRecipientsException ex) { PrintError(ex.Message); }
catch (System.Net.Mail.SmtpException ex) { PrintError(ex.Message); }
catch (ObjectDisposedException ex) { PrintError(ex.Message); }
catch (InvalidOperationException ex) { PrintError(ex.Message); }
catch (ArgumentNullException ex) { PrintError(ex.Message); }
catch (ArgumentOutOfRangeException ex) { PrintError(ex.Message); }
catch (ArgumentException ex) { PrintError(ex.Message); }
catch (Exception ex) { PrintError(ex.Message); }
}/// <summary>
/// Javascript error message popup
/// </summary>
/// <param name="ErrorMessage"></param>
protected void PrintError(string ErrorMessage)
{
Response.Write("<script>\n");
Response.Write("alert('" + ErrorMessage + "')");
Response.Write("</script>\n");
}
}
귀차니즘이 있으시다면...
아래 압축파일로 ;;
ASP.NET 웹페이지
댓글
이 글 공유하기
다른 글
-
ASP.NET 페이지 실행 주기
ASP.NET 페이지 실행 주기
2007.08.09 -
Understanding ASP.NET View State
Understanding ASP.NET View State
2007.08.08 -
FarPoint Spread를 이용한 ActiveX 페이지와 스크립트 제어
FarPoint Spread를 이용한 ActiveX 페이지와 스크립트 제어
2007.05.23 -
ASP.NET Session StateServer
ASP.NET Session StateServer
2007.05.22