作者:tigerwen01
大家在日常開發中,常常會遇到開發一個向客戶自動發送Email的應用模組,例如,當客戶操作某一特定的操作或上網註冊、購物時,伺服器端在客戶操作完成時向客戶自動發送一封確認郵件等。 .NET Framework 多種方法,可以使用socket(套接字)來建立和郵件伺服器的連接,然後使用SMTP(簡單郵件傳輸協定)服務傳送郵件,不過這樣做相當複雜。我們還是使用.NET框架的System.Web.Mail命名空間提供的類別來完成發送Email吧,因為這樣做很簡單。
System.Web.Mail命名空間為SMTP(簡單郵件傳輸協定)提供了一個簡單的託管接口,包含很多類,其中有MailMessageMailAttachmentSmtpMail等重要類,其中MailAttachment 類提供用於構造電子郵件附件的屬性和方法,MailMessage 類別提供用於建構電子郵件的屬性和方法,SmtpMail 類別提供用於使用宿主系統的協作資料物件(CDOSYS) 訊息元件來傳送訊息的屬性和方法。
為了確保程式能夠正確運行,設定IIS中預設SMTP虛擬伺服器的“中繼”方法如下:
進入“Internet資訊服務“介面,右鍵點擊“預設SMTP虛擬伺服器屬性”在彈出式選單中選擇“屬性”,在“存取」標籤中按一下「中繼」按鈕,然後在「中繼限制」視窗中在「IP位址(遮罩)/網域名稱」處加添「127.0.0.1」。
下面給出一個SendEmail.aspx文件,該文件使用Visual Web Developer 2005速成版的測試版2下開發,在Windows2000Server+sp4下運行通過。參考:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Mail" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ">
<script runat="server">
void OnSend(Object Sender,EventArgs e) {
MailMessage messge = new MailMessage();
messge.From = Sed.Text;
messge.To = Receiver.Text;
messge.Subject = Subj.Text;
messge.Body = Body.Text;
SmtpMail.SmtpServer = "localhost";
SmtpMail.Send(messge);
lab.Text ="郵件
傳送
成功
!
<html xmlns=" http://www.w3.org/1999/xhtml " >
<head runat="server">
<title>發送電子郵件使用者介面</title>
</head>
<body>
<h1>發送電子郵件使用者介面</h1>
<form id="form1" runat="server">
<div>
<hr>
<table cellspacing="8">
<tr>
<td align=right valign=bottom>發送者:</td>
<td><asp:TextBox ID=Sed runat=server/></td>
</tr>
<tr>
<td align=right valign=bottom>接收者:</td>
<td> <asp:TextBox ID=Receiver runat=server /></td>
</tr>
<tr>
<td align=right valign=bottom>主題:</td>
<td><asp:TextBox ID=Subj runat= server /></td>
</tr>
<tr>
<td align=right valign=bottom>內容:</td>
<td><asp:TextBox ID=Body TextMode=MultiLine Rows=5 Columns=40 runat= server /></td>
</tr>
</table>
<hr />
<asp:Button Text="發送" OnClick="OnSend" runat=server />
</div>
</form>
<asp:Label ID=lab runat=server/>
</body>
</html>
本文只介紹如何在.NET框架的應用程式裡發送電子郵件,並沒有涉及到System.Web.Mail命名空間的類別的詳細介紹,關於System.Web.Mail可以參考相關資料。