用ASP.NET構建完整E-mail發送系統

如果要你用ASP來做一個E-mail發送系統,你首先想到的一定是藉助第三方開發的組件,但這樣做會耗費你很多的銀子。當然你也可以用Windows的自帶的對象--CDONTS.NewMail對象來傳送E-mail,這雖然是免費的,但卻十分依賴操作平臺,CDONTS.NewMail對象只存在Windows 200和NT底下,在Windows 95/98底下是沒有這個對象。
自從Microsoft公司推出了ASP.NET,E-mail的發送已經成爲WEB程序設計的基本對象。本篇文章就是來討論如何做一個功能十分完備的E_mai的發送系統。

一.開發和運行平臺
Windows 2000 Professional、.Net FrameWork Beta 2

二.什麼樣的E-mail發送系統纔是一個功能十分完備系統 只有當一個郵件發送系統具備了:收件人地址、發信人地址、抄送地址、密送地址、郵件主題、郵件主體、和附件等功能時,這個郵件發送系統纔是一個比較完備的系統。具備的具體功能如下圖所示:

下面就介紹實現這些功能的具體步驟。

三.具體實現步驟
首先要介紹.Net FrameWork SDK中的一個關於E-mail發送的Class Library(類庫)--System.Web.Mail。這個Class library提供了E-mail發送的所有對象、屬性和方法。其中最重要的對象是MailMessage對象和SmtpMail對象。MailMessage對象主要是包裝E-mail的各個結構。譬如:收件人地址、發信人地址等。SmtpMail對象主要是把已經定義好的MailMessage對象發送出去。下面就一些重要的步驟具體說明一下:
1.爲了定義MailMessage對象,首先要創立一個MailMessage對象。通過下面語句就可以創立一個MailMessage對象。
<% @Import Namespace="System.Web.Mail"
Dim MailObj as New MailMessage() %>

2.有了一個MailMessage對象後,下面就來定義郵件的結構。我們按照上圖的郵件結構順序來逐個定義。
1>.郵件的發送地址:
MailObj.form="發送地址"
2>.郵件的目的地址:
MailObj.to="目的地址"
如果你要發送給多個人,用逗號分開每個郵件地址。
3>.郵件的抄送地址:
MailObj.cc="抄送地址"
同樣的,如果你要發送給多個人,可以在"抄送地址"上,寫上多個郵件地址,但要用逗號把他們分開。
4>.郵件的密送地址:
MailObj.bcc="密送地址"
密送地址和抄送地址類似
5>.郵件主題:
MailObj.subject="郵件主題"
6>.郵件內容:
MailObj.Body="郵件內容"
7>.郵件的優先級:
MailObj.Priority = MailPriority.Normal '這是把郵件的優先級定義爲普通,你也可以定義爲高(high)、低(low)
8>.定義郵件格式:
MailObj.BodyFormat = MailFormat.Text '這是把郵件定義爲文本格式,你也可以把郵件定義爲超文本格式,只有把MailFormat.Text改成MailFormat.Html即可。
9>.給郵件添加一個附件:
用過ASP的人都瞭解,要想瀏覽一下文件是多麼困難的事情。但ASP.NET出現以後,這一切就變的簡單起來。只用下面一行代碼,就可以選擇驅動器的任何文件。
<input id="Emailfile" type="file" runat="server" size="40" />

3.發送E-mail
SmtpMail.SmtpServer = "" '指定使用缺省的SMTP服務器
SmtpMail.Send(MailObj) '發送E-mail


四.程序完整的源代碼
<% @Import Namespace="System.Web.Mail" %>
<script language="vb" runat="server">
Sub SendButton_Click(sender as Object, e as EventArgs)
'創立一個 MailMessage 對象
Dim MailObj as New MailMessage()
'以下是設定MailMessage 對象的屬性,及程序的一些常規判斷。
'設定郵件的發送地址
if EmailFrom.text<>"" then MailObj.From = EmailFrom.text
'設定郵件的目的地址
if EmailTo.text<>"" then MailObj.To = EmailTo.text
'設定郵件的抄送地址
if EmailCc.text<>"" then MailObj.Cc = EmailCc.text
'設定郵件的密送地址
if EmailBcc.text<>"" then MailObj.Bcc = EmailBcc.text
'設定郵件格式是文本格式,如果要設定成超文本,把MailFormat.Text改成 MailFormat.Html
MailObj.BodyFormat = MailFormat.Text
'設定郵件優先級,可爲 High(高), Low(低), Normal(普通)
MailObj.Priority = MailPriority.Normal
'設定郵件主題
MailObj.Subject = EmailSubject.text
'設定郵件內容
MailObj.Body = EmailBody.text
'給郵件增加一個附件
Dim strFileName as string
strFileName=Emailfile.PostedFile.FileName
if strFileName<>"" then MailObj.Attachments.Add(new MailAttachment(strFileName))
'指定使用缺省的SMTP服務器
SmtpMail.SmtpServer = ""
'現在開始發送郵件
SmtpMail.Send(MailObj)
panelSendEmail.Visible = false
panelMailSent.Visible = true
End Sub
</script>
<html>
<body>
<asp:panel id="panelSendEmail" runat="server">
<form Method="Post" EncType="Multipart/Form-Data" runat="server">
<h2>歡迎用ASP.NET來發送E-mail</h2>
<b>請輸入郵件發送地址:</b>
<asp:textbox id="EmailFrom" size="30" runat="server" />
<p>
<b>請輸入郵件目的地址:</b>
<asp:textbox id="EmailTo" size="30" runat="server" />
<p>
<b>請輸入郵件抄送地址:</b>
<asp:textbox id="EmailCc" size="30" runat="server" />
<p>
<b>請輸入郵件密送地址:</b>
<asp:textbox id="EmailBcc" size="30" runat="server" />
<p>
<b>請輸入郵件主題:</b>
<asp:textbox id="EmailSubject" size="30" runat="server" />
<p>
<b>請輸入郵件主體:</b>
<asp:textbox id="EmailBody" TextMode="MultiLine"
Columns="40" Rows="10" runat="server" />
<p>
<b>請加入附件名稱:</b>
<input id="Emailfile" type="file" runat="server" size="40" />
<asp:button runat="server" id="SendButton" Text="發送"
OnClick="SendButton_Click" />
</form>
</asp:panel>
<asp:panel id="panelMailSent" runat="server" Visible="False">
您的郵件已經成功發送,歡迎您的再次使用!
</asp:panel>
</body>
</html>



五.至此一個完整的E-mail發送系統就完成了。如果你的機器達到了本文前面提到的運行環境,那麼就建立一個指向此aspx文件的虛擬目錄,連接上Internet,在瀏覽器裏運行此程序,就可以方便的完成E-mail的發送了。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章