ASP.NET基于Web Mail收發(fā)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)(源代碼+論文)
ASP.NET基于Web Mail收發(fā)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)(源代碼+論文),ASP.NET基于Web,Mail收發(fā)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)(源代碼+論文),ASP,NET,基于,Web,Mail,收發(fā),系統(tǒng),設(shè)計(jì),開(kāi)發(fā),源代碼,論文
分類(lèi)號(hào):分類(lèi)號(hào):TP311.1TP311.1 U U D D C C:D10621-408-(2007)D10621-408-(2007)60116011-0-0密密 級(jí):公級(jí):公 開(kāi)開(kāi) 編編 號(hào):號(hào):20032150062003215006成成 都都 信信 息息 工工 程程 學(xué)學(xué) 院院學(xué)學(xué) 位位 論論 文文WebWeb MailMail 收發(fā)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)收發(fā)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)論論文作者姓名:文作者姓名:葉葉 科科申申請(qǐng)請(qǐng)學(xué)位學(xué)位專(zhuān)業(yè)專(zhuān)業(yè): :網(wǎng)網(wǎng) 絡(luò)絡(luò) 工工 程程申申請(qǐng)請(qǐng)學(xué)位學(xué)位類(lèi)別類(lèi)別: :工工 學(xué)學(xué) 學(xué)學(xué) 士士指指導(dǎo)導(dǎo)教教師師姓姓名名( (職職稱稱) ): :李李 誼誼 瑞瑞(研究研究員員)論論文提交日期:文提交日期:2007 年年 6 月月 10 日日WebWeb MailMail 收發(fā)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)收發(fā)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)摘摘 要要互聯(lián)網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,電子郵件服務(wù)已經(jīng)成為人們基本的信息交互手段,也是網(wǎng)絡(luò)服務(wù)中最早和最基本的服務(wù)之一。傳統(tǒng)郵件系統(tǒng)大多是基于 C/S結(jié)構(gòu),如 Lotus notes、Microsoft Exchange Server 等,這些郵件系統(tǒng)占用相對(duì)較多的服務(wù)器資源,對(duì)服務(wù)器性能有更高的要求,同時(shí)也增加了管理負(fù)擔(dān)。并且,由于不同服務(wù)器需要特定的客戶端軟件,增加了系統(tǒng)的開(kāi)發(fā)和管理成本?;?Web 的郵件服務(wù)提供了更快捷、高效的服務(wù),使得新一代的 Web Mail能解決傳統(tǒng)郵件的不足之處。本文設(shè)計(jì)并實(shí)現(xiàn)的郵件收發(fā)系統(tǒng)基于 B/S 模式,以組件技術(shù)為基礎(chǔ),利用 System.Web.Mail 命名空間構(gòu)造函數(shù),分別調(diào)用Mailmessage,Mailattachment 和 SMTPmail 方法,實(shí)現(xiàn)以 Web 網(wǎng)頁(yè)的形式收發(fā)電子郵件,用戶只需要通過(guò) Web 頁(yè)面就可以實(shí)現(xiàn)帶附件郵件的發(fā)送。本論文分為四個(gè)部分,分別是:一、選題意義及系統(tǒng)構(gòu)成;二、介紹郵件收發(fā)系統(tǒng)的工作原理、優(yōu)缺點(diǎn)及開(kāi)發(fā)環(huán)境;三、程序編碼及頁(yè)面設(shè)計(jì); 四、對(duì)Web 郵件系統(tǒng)進(jìn)行測(cè)試并獲得測(cè)試的結(jié)果。關(guān)鍵詞:關(guān)鍵詞: Web Mail;ASP;SMTP 協(xié)議;POP 協(xié)議Design and Implement of Web Mail SystemAbstractWith the development of the Internet technology, mail service has been a basic mean of information communication, which is also one of the earliest and the most basic services of the Internet. However, traditional mail services is based on client and server, for example, Lotus notes, Microsoft Exchange Server, which have used more resources of the server, thus, affect the capability of server and need high performance of server. Meanwhile, each server needs special client, which increases the cost of developing and managing the system. Based on Web mail server system provides faster, more efficient Web mail services, with the strong capability, the new generation of the Web mail can change the disadvantage of the traditional mail. This paper designs and implements a Web mail receiving-sending system, which is based on browser and server as well as components technology, sending mails through Web and users can use it to send mails with attachments.This paper is divided into four main modules, respectively are First, introduction the background of the selecting the topic as well as the constitution of the system; Second, introduction of work principle, superiors and inferiors and the developing environment of the mail sending-receiving system; Third, introduction of the code procedures and design of the Web page; Last, test of the mail system and the result of the test. Key words: Web Mail; ASP; SMTP protocol; POP3 protocol目目 錄錄論文總頁(yè)數(shù):17 頁(yè)1 引言.11.1選題意義.11.2基于 C/S 模式郵件的運(yùn)行機(jī)理.11.3郵件的發(fā)送和 SMTP 服務(wù)器.21.4郵件協(xié)議及原理.21.5SMTP 簡(jiǎn)介.31.6SMTP 的運(yùn)行過(guò)程.41.7SMTP 中繼服務(wù)的設(shè)置.42總體分析.42.1工作原理.42.1.1單域網(wǎng)絡(luò)下的單 Web 郵件服務(wù)器系統(tǒng).42.1.2多域網(wǎng)絡(luò)下的單 Web 郵件服務(wù)器系統(tǒng).52.1.3多域網(wǎng)絡(luò)下的多 Web 郵件服務(wù)器系統(tǒng).52.1.4將內(nèi)部網(wǎng)絡(luò)的電子郵件發(fā)送 Internet.52.2IIS WEB 郵件發(fā)送的特點(diǎn).52.3IIS WEB 郵件發(fā)送的不足.62.4IIS WEB 環(huán)境建立.62.5開(kāi)發(fā)環(huán)境.63程序的設(shè)計(jì)與實(shí)現(xiàn).63.1SYSTEM.WEB.MAIL 命名空間介紹.63.2程序設(shè)計(jì)主要步驟.73.3界面設(shè)計(jì).73.4主要代碼.124軟件測(cè)試.14結(jié) 論.15參考文獻(xiàn).15致 謝.16聲 明.17第 1 頁(yè) 共 17 頁(yè)1 1 引言引言隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,Web Mail 系統(tǒng)的應(yīng)用已經(jīng)成為非常流行、方便、快捷的通信方式。傳統(tǒng)的基于 C/S 模式郵件系統(tǒng)由發(fā)送系統(tǒng)和接收系統(tǒng)組成,發(fā)送部分負(fù)責(zé)從郵件從客戶端接收到服務(wù)器,從郵件服務(wù)器發(fā)送到另一個(gè)郵件服務(wù)器。接收部分負(fù)責(zé)把郵件從服務(wù)器上接收下來(lái),使用特定的客戶端郵件收發(fā)程序。雖然已經(jīng)使得人們感到滿足,但是由于傳統(tǒng)郵件開(kāi)發(fā)的難度很大,只有經(jīng)過(guò)專(zhuān)業(yè)學(xué)習(xí)的程序員才能去設(shè)計(jì)開(kāi)發(fā),有一定的不足之處。Microsoft 公司開(kāi)發(fā)的.NET 強(qiáng)大平臺(tái),為廣大的程序開(kāi)發(fā)人員提供了更多更豐富的組件。IIS(Internet Information Server)對(duì)基于 NT 技術(shù)構(gòu)架的站點(diǎn)來(lái)說(shuō),是主要的 Web 服務(wù)器。ASP(Active Server Pages)與 IIS 相結(jié)合是微軟推出的完整的 Internet 解決方案,同時(shí) ASP 技術(shù)就是以組件對(duì)象模型(COM, Componet Object Model)為基礎(chǔ)的。ASP 之所以很流行,很大程度得益于 IIS增加了許多新的功能,其中的 IIS SMTP 服務(wù)器組件提供了便捷高效的 Web 郵件服務(wù)。ASP 與.NET 平臺(tái)結(jié)合,配合.NET 平臺(tái)具有發(fā)送郵件功能的命名空間System.Web.Mail,使得郵件收發(fā)程序的開(kāi)發(fā)簡(jiǎn)化了許多。因此,本設(shè)計(jì)在腳本中調(diào)用.NET 框架中 System.Web.Mail 命名空間,結(jié)合HTML 完成郵件發(fā)送的開(kāi)發(fā)與設(shè)計(jì)實(shí)現(xiàn)。1.11.1 選題意義選題意義在今天的信息社會(huì)中,電子郵件已逐漸成為重要的通訊工具,它在諸如通知、廣播和警報(bào)系統(tǒng)的應(yīng)用中起著關(guān)鍵角色的作用。Web 方式下的郵件發(fā)送,比手工打開(kāi) Outlook,手工鍵入相關(guān)的信息來(lái)發(fā)送郵件的方式更優(yōu)越。舉一個(gè)極端的例子,在某些系統(tǒng)的應(yīng)用中,我們可以讓電子郵件自動(dòng)的產(chǎn)生,自動(dòng)的發(fā)送,收件都可以為某個(gè)人,也可以為符合條件的從數(shù)據(jù)庫(kù)里查詢出來(lái)的一批人。試想,如果這樣的工作手工來(lái)做的話,不僅費(fèi)時(shí)而且費(fèi)力,甚至?xí)霈F(xiàn)誤寄的問(wèn)題,因而效率不高。Web 方式下的郵件發(fā)送的優(yōu)越之處,在于其發(fā)送效率高,發(fā)件人手工寫(xiě)的內(nèi)容少,既省時(shí)又準(zhǔn)確。1.21.2 基于基于 C/SC/S 模式郵件的運(yùn)行機(jī)理模式郵件的運(yùn)行機(jī)理基于 C/S 的郵件運(yùn)行模式是典型的傳統(tǒng)郵件工作方式,發(fā)送郵件將郵件從客戶端發(fā)送到對(duì)應(yīng)的服務(wù)器端,接收郵件又從郵件服務(wù)器把郵件下載下來(lái),進(jìn)行離線閱讀等操作。這種模式下用戶只能使用特定的客戶端來(lái)進(jìn)行郵件的發(fā)送的接收。如圖 1第 2 頁(yè) 共 17 頁(yè) 發(fā)送郵件 接收郵件 圖 1 基于 C/S 模式的郵件運(yùn)行機(jī)理1.31.3 郵件的發(fā)送和郵件的發(fā)送和 SMTPSMTP 服務(wù)器服務(wù)器郵件的發(fā)送過(guò)程是從像 outlook 這樣的客戶端將一封電子郵件發(fā)給一個(gè)SMTP 服務(wù)器開(kāi)始的。一個(gè)客戶端只知道一個(gè)與之相連的 SMTP 服務(wù)器,所以本地客戶端發(fā)出的全部郵件,不管其目的地地址是哪里,都將發(fā)送到同一個(gè)服務(wù)器,然后本地 SMTP 服務(wù)器負(fù)責(zé)決定如何處置該郵件。如果目的地址就是本地域的 SMTP 服務(wù)器,郵件就會(huì)一直被存放在本地 SMTP 服務(wù)器,郵件就會(huì)一直被放在本地的 SMTP 服務(wù)器的郵件庫(kù)中,直到收件人訪問(wèn)服務(wù)器上自己的郵件;如果郵件的目的地址是另一個(gè)遠(yuǎn)程域的 SMTP 服務(wù)器,SMTP 服務(wù)器就查詢DNS Mail Exchange-MX 記錄,該記錄為進(jìn)入相應(yīng)域的所有郵件提供 SMTP 服務(wù)器的 IP 地址,在找到該地址后,本地的 SMTP 服務(wù)器就會(huì)把郵件從本地郵件庫(kù)發(fā)送到該地址的 SMTP 服務(wù)器上。所以在這種情況下,郵件先從用戶的發(fā)送到本地 SMTP 服務(wù)器,再?gòu)谋镜?SMTP 發(fā)送到目的域的 SMTP 服務(wù)器。1.41.4 郵件協(xié)議及原理郵件協(xié)議及原理郵件協(xié)議是指可以通過(guò)哪種方式進(jìn)行電子郵件的收發(fā),它們?yōu)猷]件的發(fā)送和接收提供標(biāo)準(zhǔn)。常用的郵件協(xié)議有 IMAP、SMTP、POP3 等 IMAP 是 Internet Message Access Protocol 的縮寫(xiě),顧名思義,主要提供的是通過(guò) Internet 獲取信息的一種協(xié)議。IMAP 象 POP 那樣提供了方便的郵件下載服務(wù),讓用戶能進(jìn)行離線閱讀,但 IMAP 能完成的卻遠(yuǎn)遠(yuǎn)不只這些。IMAP提供的摘要瀏覽功能可以讓你在閱讀完所有的郵件到達(dá)時(shí)間、主題、發(fā)件人、大小等信息后才作出是否下載的決定。POP 的全稱是 Post Office Protocol ,即郵局協(xié)議,用于電子郵件的接收,它使用 TCP 的 110 端口,現(xiàn)在常用的是第三版 ,所以簡(jiǎn)稱為 POP3。POP3 仍采用 Client/Server 工作模式, 。當(dāng)客戶機(jī)需要服務(wù)時(shí),客戶端的軟件(如Outlook Express 或 Fox Mail)將與 POP3 服務(wù)器建立 TCP 連接,此后要經(jīng)過(guò)POP3 協(xié)議的三種工作狀態(tài),首先是認(rèn)證過(guò)程,確認(rèn)客戶機(jī)提供的用戶名和密碼,在認(rèn)證通過(guò)后便轉(zhuǎn)入處理狀態(tài),在此狀態(tài)下用戶可收取自己的郵件或做郵件的刪除,在完成響應(yīng)的操作后客戶機(jī)便發(fā)出 quit 命令,此后便進(jìn)入更新?tīng)顟B(tài),將郵件客戶端程序(C)郵件服務(wù)器(S)SMTPPop3第 3 頁(yè) 共 17 頁(yè)做刪除標(biāo)記的郵件從服務(wù)器端刪除掉。到此為止整個(gè) POP 過(guò)程完成。SMTP 稱為簡(jiǎn)單 Mail 傳輸協(xié)議(Simple Mail Transfer Protocal),目標(biāo)是向用戶提供高效、可靠的郵件傳輸。SMTP 的一個(gè)重要特點(diǎn)是它能夠在傳送中接力傳送郵件,即郵 件可以通過(guò)不同網(wǎng)絡(luò)上的主機(jī)接力式傳送。工作在兩種情況下:一是電子郵件從客戶機(jī)傳輸?shù)椒?wù)器;二是從某一個(gè)服務(wù)器傳輸?shù)搅硪粋€(gè)服務(wù)器。SMTP 是個(gè)請(qǐng)求/響應(yīng)協(xié)議,它監(jiān)聽(tīng) 25 號(hào)端口,用于接收用戶的 Mail請(qǐng)求,并與遠(yuǎn)端 Mail 服務(wù)器建立 SMTP 連接。基于 B/S 工作方式的 IIS WEB MAIL 僅為全部郵件設(shè)立一個(gè)目錄,客戶端可以通過(guò)直接訪問(wèn)或者 POP3 服務(wù)器方式。如圖 2 發(fā)送郵件 互相發(fā)送郵件 接收郵件(其它組件方式)圖 2 WEB MAIL 郵件的運(yùn)行機(jī)理SMTP 協(xié)議只負(fù)責(zé)郵件從客戶端發(fā)送到目的域的 SMTP 服務(wù)器,用戶要從服務(wù)器接收郵件,服務(wù)器端還必須提供郵件接收服務(wù),而 POP3 就是用戶接收他們郵件的協(xié)議,POP3 服務(wù)器負(fù)責(zé)郵件的接收。 POP3 服務(wù)器在服務(wù)器上一直運(yùn)行,等待來(lái)自客戶端的連接。當(dāng)客戶端試圖連接到 POP3 服務(wù)器時(shí),服務(wù)器用郵件帳號(hào)的用戶名和密碼來(lái)區(qū)分用戶,郵件服務(wù)器驗(yàn)證用戶身份后,POP3 服務(wù)器就將該用戶的郵件從 SMTP 郵件庫(kù)發(fā)送到用戶的收件箱。SMTP 服務(wù)器一般為每個(gè)用戶設(shè)立了一個(gè)目錄,它類(lèi)似于用戶的郵件箱。這種目錄結(jié)構(gòu)使得 POP3 服務(wù)器可以高效的取出指定用戶的全部郵件。1.51.5 SMTPSMTP 簡(jiǎn)介簡(jiǎn)介目前在 Internet 上廣泛采用的網(wǎng)絡(luò)互連協(xié)議是 TCP/IP 協(xié)議族,該協(xié)議族的是為最大范圍的計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)提供互操作性。針對(duì)電子郵件服務(wù),為擴(kuò)展電子郵件的互操作性,TCP/IP 協(xié)議族也規(guī)定了郵件傳輸協(xié)議,目前采用的是簡(jiǎn)單郵件傳輸協(xié)議 SMTP。它作為 TCP/IP 協(xié)議族的一部分,規(guī)定了計(jì)算機(jī)間交換電子郵件時(shí)的一些細(xì)節(jié),主要是一些控制信息,包括對(duì)正確連接的校驗(yàn)、發(fā)送者的標(biāo)識(shí)、傳輸參數(shù)的商定及郵件的傳輸。SMTP 中定義了命令以及命令的響應(yīng)??蛻魴C(jī)向服務(wù)器發(fā)送命令,并根據(jù)服務(wù)器回送的響應(yīng)進(jìn)行一下步的工作。客戶端瀏覽器(B)郵件服務(wù)器(S)ASPSystem.Web.Mail遠(yuǎn)程郵件服務(wù)器(S)第 4 頁(yè) 共 17 頁(yè)兩者之間相互配合,實(shí)現(xiàn)郵件的傳送。1.61.6 SMTP 的運(yùn)行過(guò)程的運(yùn)行過(guò)程 SMTP 的運(yùn)行只需要一個(gè)可行的有序數(shù)據(jù)流傳輸通道,即 TCP 連接,這種連接可以跨越若干網(wǎng)絡(luò),以中繼的方式傳輸,在不同的傳輸系統(tǒng)上的主機(jī)之間傳輸電子郵件。 當(dāng)客戶端提出發(fā)送電子郵件的請(qǐng)示時(shí),將依次發(fā)生下面的事件:SMTP 發(fā)送端建立一個(gè)到達(dá)接收端 SMTP 的雙向信息傳輸通道,接收端 SMTP 既可以是最終目的地,也可以是中轉(zhuǎn)目的地;1、SMTP 發(fā)送發(fā)送一個(gè) Mail 命令,指明電子郵件的發(fā)送方;2、如果 SMTP 接收端能夠接受該電子郵件,那么它就發(fā)出一個(gè) OK 答復(fù)消息;3、SMTP 發(fā)送端發(fā)送一個(gè) RCPT 命令,指明郵件的收件人;4、如果 SMTP 接收端能夠?yàn)樵撌占私邮锗]件,它就發(fā)出一個(gè) OK 答復(fù),如果不能,就發(fā)出一個(gè)拒絕為該收件人接受郵件的答復(fù)消息;5、當(dāng)協(xié)商確定了收件人后,SMTP 發(fā)送端便開(kāi)始發(fā)送郵件數(shù)據(jù);6、如果 SMTP 接收端成功地處理了郵件數(shù)據(jù),它就發(fā)出一個(gè) ok 答復(fù)消息;最后,SMTP 運(yùn)行,完成后斷開(kāi) TCP 連接。郵于 SMTP 協(xié)議的通訊指令已經(jīng)被封裝進(jìn) System.Web.Mail 命名空間中的類(lèi),在程序中只用一句 stmpmail.send(email)即可完成郵件發(fā)送,封裝后并未體現(xiàn)上述的 SMTP 運(yùn)行過(guò)程。1.71.7 SMTPSMTP 中繼服務(wù)的設(shè)置中繼服務(wù)的設(shè)置該畢業(yè)設(shè)計(jì)是使用 Windows 2003 Server 系統(tǒng)內(nèi)置的 SMTP 郵件服務(wù)來(lái)進(jìn)行郵件發(fā)送的,幫在程序中未設(shè) SMTPmail 屬性,SMTPServer 設(shè)置為 localhost,這樣可以獲得快的郵件發(fā)送速度。當(dāng)然也可以設(shè)置因特網(wǎng)上提供了 SMTP 服務(wù)器的郵件服務(wù)器,但需要滿足一定的條件,如下:1、現(xiàn)在多數(shù)的免費(fèi)郵件提供商都不再對(duì)所有郵件提供 SMTP 服務(wù),需要驗(yàn)證用戶身份,在程序中需要考慮用戶身份驗(yàn)證的問(wèn)題;2、若通過(guò)這種方式發(fā)送過(guò)多的郵件,可能被誤認(rèn)為是垃圾郵件而被拒絕服務(wù)。2 2總體分析總體分析2.12.1 工作原理工作原理2.1.12.1.1 單域網(wǎng)絡(luò)下的單單域網(wǎng)絡(luò)下的單 Web 郵件服務(wù)器系統(tǒng)郵件服務(wù)器系統(tǒng)這種情況只適用于小型網(wǎng)絡(luò),只要在該域的任何一臺(tái)服務(wù)器上建立了 Web郵件站點(diǎn),該域的所有用戶都可以通過(guò)瀏覽器使用其 Web 郵件服務(wù)。第 5 頁(yè) 共 17 頁(yè)2.1.22.1.2 多域網(wǎng)絡(luò)下的單多域網(wǎng)絡(luò)下的單 WebWeb 郵件服務(wù)器系統(tǒng)郵件服務(wù)器系統(tǒng)這種情況適用于中型規(guī)模的網(wǎng)絡(luò)。如果多域網(wǎng)絡(luò)各個(gè)域之間已經(jīng)通過(guò)路由設(shè)備連通,那么只要在該網(wǎng)絡(luò)的任何一個(gè)域的任何一個(gè)服務(wù)器上建立了 Web 郵件服務(wù)站點(diǎn),全網(wǎng)絡(luò)的所有用戶都可以使用 Web 郵件服務(wù)。這時(shí),所有的域的用戶的郵件地址的域名部分都相同,都是 Web 郵件服務(wù)站點(diǎn)所在的域的域名。如果要讓每個(gè)域的用戶的郵件地址用自己所在的域名,就必須在 IIS 管理控制臺(tái)的 SMTP 服務(wù)器上添加其它各個(gè)域的域名,同時(shí)把這些新添加的域設(shè)置為本地域,所有的域名都自動(dòng)成為的本地域的別名。但這對(duì)用戶是透明的,在用戶看來(lái)他們使用的就是他們所在域的郵件服務(wù)器。2.1.32.1.3 多域網(wǎng)絡(luò)下的多多域網(wǎng)絡(luò)下的多 WebWeb 郵件服務(wù)器系統(tǒng)郵件服務(wù)器系統(tǒng)這種系統(tǒng)適用大型、物理分散的網(wǎng)絡(luò)系統(tǒng)。在這類(lèi)網(wǎng)絡(luò)中,或者用戶規(guī)模龐大,或者域之間的連接速度太慢,如果所有的用戶都使用同一個(gè) Web 郵件服務(wù)器勢(shì)必對(duì)服務(wù)器有更高的要求;對(duì)于物理分散的網(wǎng)絡(luò),在多 Web 郵件系統(tǒng)下,用戶可以就近服務(wù),節(jié)約了寶貴的帶寬資源,對(duì)通過(guò)低速停產(chǎn)連接的兩個(gè)較大的域尤其重要。在多 Web 郵件服務(wù)器系統(tǒng)中,在每個(gè) SMTP 服務(wù)器上必須添加所有其它SMTP 服務(wù)所在的域,并把它們?cè)O(shè)置為遠(yuǎn)程域,而且各 SMTP 服務(wù)器設(shè)置為允許相互轉(zhuǎn)發(fā)郵件。這樣各個(gè)域的用戶就可以相互發(fā)送電子郵件了。2.1.42.1.4 將內(nèi)部網(wǎng)絡(luò)的電子郵件發(fā)送將內(nèi)部網(wǎng)絡(luò)的電子郵件發(fā)送 InternetInternet在能夠把電子郵件發(fā)送到 Internet 之前,內(nèi)部網(wǎng)絡(luò)必須直接或通過(guò)代理服務(wù)器接入 Internet;之后,在 IIS SMTP 服務(wù)器上設(shè)置郵件網(wǎng)絡(luò)為智能主機(jī)。所有外出的郵件不需要查找郵件目的域的 MX 記錄,都直接發(fā)送到郵件網(wǎng)關(guān)而不是本地 SMTP 服務(wù)器;郵件再?gòu)泥]件網(wǎng)關(guān)被發(fā)送到目的 Internet 域。2.22.2 IISIIS WebWeb 郵件發(fā)送的特點(diǎn)郵件發(fā)送的特點(diǎn)IIS 新增加的一系統(tǒng)功能組件, 不但加強(qiáng)了 Web 服務(wù)和事務(wù)處理能力,更增加了新聞、搜索服務(wù)和郵件服務(wù)等功能。IIS SMTP 服務(wù)器是 IIS 的一體信息服務(wù)解決方案的重要組成部分,用其構(gòu)建的 Web 郵件系統(tǒng)有以下特點(diǎn):1、IIS 的 SMTP 服務(wù)是 IIS 的一個(gè)組件,它與 IIS 緊密連接在一起。實(shí)質(zhì)上,IIS 本身就是郵件服務(wù)器,只不過(guò)這種方式下郵件服務(wù)集成于 IIS 和操作系統(tǒng),提高了郵件服務(wù)的效率和系統(tǒng)的穩(wěn)定性。2、減少了系統(tǒng)的復(fù)雜性和管理負(fù)擔(dān)。只需要在安裝配置 IIS 的時(shí)候選中SMTP 郵件服務(wù)組件,就可以在系統(tǒng)建立郵件服務(wù)。如果使用特定的郵件服務(wù)系統(tǒng),服務(wù)器就不得不運(yùn)行另一套系統(tǒng),占用額外的服務(wù)器資源,第 6 頁(yè) 共 17 頁(yè)而 IIS Web 郵件系統(tǒng)則減小了系統(tǒng)的復(fù)雜性和系統(tǒng)管理員的負(fù)擔(dān)。3、容易實(shí)現(xiàn),構(gòu)造成本低。使用 SMTP 服務(wù)器組件可以輕松建立起 Web 郵件服務(wù),用戶不需要安裝任何郵件客戶端軟件,只要一個(gè) Web 瀏覽器即可。而其它的郵件系統(tǒng),每個(gè)用戶必需安裝特定的客戶端郵件軟件,增加了實(shí)現(xiàn)的難度,也提高了系統(tǒng)構(gòu)造成本和費(fèi)用。4、IIS Web 郵件系統(tǒng)提供簡(jiǎn)單方便的郵件服務(wù)??蛻敉ㄟ^(guò) Web 瀏覽器就可以實(shí)現(xiàn)用戶主動(dòng)注冊(cè)郵件帳號(hào)和郵件的收發(fā),也可以郵件中插入附件,同時(shí),用戶也可以使用客戶端郵件軟件,如 Outlook 來(lái)發(fā)送郵件。5、可與其它郵件系統(tǒng)地協(xié)同服務(wù)。2.32.3 IISIIS WebWeb 郵件發(fā)送的不足郵件發(fā)送的不足1、由于 SMTP 進(jìn)入 SMTP 服務(wù)器的所有郵件都放在了同一個(gè)目錄中,而不是為每一個(gè)帳號(hào)創(chuàng)建一個(gè)單獨(dú)的目錄,其檢索速度相對(duì)較慢。2、由于不能使用像 Outlook 這樣的郵件客戶端軟件來(lái)接收郵件,所以就不能為用戶提供許多方便的各種規(guī)則。3、有待進(jìn)一步完善。雖然網(wǎng)絡(luò)開(kāi)發(fā)人員可以通過(guò)編寫(xiě) ASP 腳本程序來(lái)實(shí)現(xiàn)所有的郵件功能,但這要求開(kāi)發(fā)人員 ASP 開(kāi)發(fā)人員精通 ASP,增加開(kāi)發(fā)難度。這與其它郵件系統(tǒng)的零編程比起來(lái),有著明顯的不足,也影響了其推廣的速度。2.42.4 IISIIS WebWeb 環(huán)境建立環(huán)境建立安裝 SMTP 服務(wù)器組件后并建立 Web 郵件服務(wù)站點(diǎn),郵件服務(wù)站點(diǎn)應(yīng)該提供郵件的發(fā)送和接收等服務(wù),這樣所有能訪問(wèn)該站點(diǎn)的帳號(hào)都可以申請(qǐng)郵件帳號(hào),并使用站點(diǎn)提供了郵件服務(wù)。2.52.5 開(kāi)發(fā)環(huán)境開(kāi)發(fā)環(huán)境該設(shè)計(jì)開(kāi)發(fā)環(huán)境使用 Windows 2003 Server Standard 操作系統(tǒng),搭建 SMTP和 POP3 郵件服務(wù)器,配置.NET 2.0 環(huán)境,代碼編寫(xiě)工具為 Dreamwaver 8.0。3 3程序的設(shè)計(jì)與實(shí)現(xiàn)程序的設(shè)計(jì)與實(shí)現(xiàn)3.13.1 System.Web.Mail 命名空間介紹命名空間介紹System.Web.Mail 命名空間包含使您可以使用 CDO 消息組件來(lái)構(gòu)造和發(fā)送消息的類(lèi)。郵件可通過(guò)系統(tǒng)的 SMTP 郵件服務(wù)或任意的 SMTP 服務(wù)器來(lái)傳送。該命令空間包含三個(gè)類(lèi),如下說(shuō)明類(lèi)的常用屬性、方法說(shuō)明:(1)、MailMessage 類(lèi)的屬性:該類(lèi)提供了多個(gè)屬性、方法、函數(shù),用以構(gòu)造電子郵件。其中,常用屬性如表(2)、MailAttachment 類(lèi)的函數(shù)第 7 頁(yè) 共 17 頁(yè)該類(lèi)中的 MailAttachment 構(gòu)造函數(shù)常與 new 子句配合來(lái)初始化附件類(lèi)的新實(shí)例??捎脙煞N方式進(jìn)行初始化。1、僅指定文件名;2、同時(shí)指定文件名和編碼類(lèi)型。(3)、SMTPmail類(lèi)的屬性及方法:該類(lèi)提供了屬性及方法以調(diào)用 CDO 組件的功能來(lái)發(fā)送電子郵件,其中常用的屬性有:1、SMTPserver屬性。用于獲取或設(shè)置發(fā)送電子郵件的 SMTP 中繼郵件服務(wù)器的名稱;若不設(shè)置該屬性,則使用本地(系統(tǒng)內(nèi)置,如 127.0.0.1)的SMTP 服務(wù)器的名稱。2、send 方法。該方法用于發(fā)送電子郵件。類(lèi)的常用屬性方法說(shuō)明:(見(jiàn)表 1)表 1類(lèi)的常用屬性MailAttachment提供用于構(gòu)造電子郵件附件的屬性和方法MailMessage提供用于構(gòu)造電子郵件的屬性和方法。SMTPMail提供用于使用 Windows 2000 的協(xié)作數(shù)據(jù)對(duì)象 (CDOSYS) 消息組件來(lái)發(fā)送消息的屬性和方法。其中,MailMessage 類(lèi)提供的接口很多,以創(chuàng)建 MailObject 實(shí)例對(duì)象為例:如發(fā)件人(MailObject.From)、收件人(MailObject.To)、抄送(MailObject.Cc)、暗送(MailObject.Bcc)、郵件主題(MailObject.Subject)、郵件正文(MailObject.Body)等基本要素,也包括如優(yōu)先級(jí)(MailObject.Priority)、郵件格式(MailObject.BodyFormat)、編碼類(lèi)型(MailObject.BodyFormat)等。3.23.2 程序設(shè)計(jì)主要步驟程序設(shè)計(jì)主要步驟首先要建立對(duì) System.Web.Dll 動(dòng)態(tài)連接庫(kù)的引用。然后,在窗口類(lèi)之前用以下語(yǔ)句導(dǎo)入命名空間:Import System.Web.Mail,通過(guò)初始化構(gòu)造一個(gè)MailMessage()函數(shù)定義變量,將接收 HTML 網(wǎng)頁(yè)中填入的信息賦值給變量,這樣就可以引用其中的成員。3.33.3 界面設(shè)計(jì)界面設(shè)計(jì)1、首頁(yè)首頁(yè)設(shè)置傳值頁(yè)面,把登錄信息中的用戶名,密碼等傳到下一個(gè)頁(yè)面(default.asp),form 標(biāo)簽的名稱為 f1,主要代碼如:設(shè)置屬性及傳值頁(yè)面?zhèn)饔脩裘麄髅艽a在首頁(yè)中加入了判斷輸入的代碼,如 if (username.value = )alert(用戶名不可為空);第 8 頁(yè) 共 17 頁(yè)usernameshow.focus();return ;并加入了一些圖片,生成的效果如圖 3 圖 3登錄首頁(yè)2、發(fā)送郵件頁(yè)面發(fā)送郵件的頁(yè)面調(diào)用.NET 框架中的 System.Web.Mail, 此頁(yè)面的運(yùn)行需要.NET2.0 框架環(huán)境,其它代碼也是該設(shè)計(jì)的核心部分,在主要代碼部分有詳細(xì)的說(shuō)明,詳見(jiàn) 3.5 發(fā)送郵件頁(yè)面主要代碼, 生成頁(yè)面如圖 4第 9 頁(yè) 共 17 頁(yè)圖 4郵件發(fā)送頁(yè)面3、用戶登錄后頁(yè)面這是一個(gè)框架頁(yè)面,分為收件箱,草稿箱,發(fā)件箱和垃圾箱,每一個(gè)部分分別用一個(gè)頁(yè)面來(lái)實(shí)現(xiàn),其中最重要的收件箱用 listmail.asp 來(lái)實(shí)現(xiàn),在頁(yè)面中郵件總數(shù)用%dim eiset ei = server.createobject(easymail. PerFolders)創(chuàng)建對(duì)象并初始化變量然后分別定義變量來(lái)接收用來(lái)顯示組件中收件箱郵件的數(shù)量,同理分別用,來(lái)調(diào)用組件中收件箱數(shù)量,未讀郵件數(shù)量和郵箱使用率,并對(duì)是否為空做判斷。存儲(chǔ)空間的大小用來(lái)獲取,用來(lái)顯示空間使用率,其中 bf = CInt(100 * CLng(cursize / 1000) / maxsize),這里郵件設(shè)計(jì)為 10M生成如圖 5第 10 頁(yè) 共 17 頁(yè)圖 5登錄后4、收件箱收件箱頁(yè)面首先用%dim eiset ei = server.createobject(easymail.InfoList)創(chuàng)建對(duì)象并定義接收信息列表中內(nèi)容,用ei.LoadMailBox username 加載組件中的信息收件箱中所有的郵件信息用循環(huán)來(lái)顯示接收,%dim forpnforpn = i = 0do while i 循環(huán)結(jié)束如圖 6圖 6收件箱5、郵件查看在查看郵件頁(yè)面(showmail.asp)中同樣調(diào)用組件中來(lái)顯示每一郵件的信息值得注意的是在顯示詳細(xì)頁(yè)面的時(shí)候,如果沒(méi)有規(guī)定編碼格式,可能出現(xiàn)亂碼的情況,因此在這里添加一個(gè)判斷charset = UCase(ei.Text_CharSet)if charset = or charset = DEFAULT_CHARSET thencharset = gb2312把頁(yè)面的編碼設(shè)為 gb2312日期,優(yōu)先級(jí),發(fā)件人,發(fā)件人地址,收件人地址,主題和郵件的詳細(xì)內(nèi)容分別調(diào)用組件中 Time,XMSMailPriority 等來(lái)實(shí)現(xiàn),具體格式如下:郵件優(yōu)先級(jí)判斷:%xmsp = ei.XMSMailPriority定義郵件優(yōu)先級(jí)if xmsp = High then第 12 頁(yè) 共 17 頁(yè)Response.Write 緊急郵件elseif xmsp = Low thenResponse.Write 慢件elseResponse.Write 普通郵件end if%發(fā)件人調(diào)用: 定義變量接收收件人變量調(diào)用主題調(diào)用郵件內(nèi)容如圖 7圖 7郵件查看3.43.4 主要代碼主要代碼程序主要頁(yè)面程序如下:第 13 頁(yè) 共 17 頁(yè)1、郵件發(fā)送頁(yè)面: Sub SendMail(ByVal sender As Object, ByVal e As EventArgs) Dim MailObject As New MailMessage() 構(gòu)造一個(gè) mailmessage 函數(shù),MailObject 為構(gòu)造函數(shù)名 下面是判斷填的信息是否為空,不為空則為 text 中的內(nèi)容 If Emailfrom.Text Then MailObject.From = Emailfrom.Text 發(fā)件人 If EmailTo.Text Then MailObject.To = EmailTo.Text 收件人,這里必填,否則郵件找不到郵件服務(wù)器上的郵箱信息,會(huì)出錯(cuò) If EmailCc.Text Then MailObject.Cc = EmailCc.Text 抄送 If EmailBcc.Text Then MailObject.Bcc = EmailBcc.Text 密送 MailObject.Priority=MailPriority.High 郵件發(fā)送優(yōu)先級(jí),可以有high,normal 和 low 三種選擇 MailObject.Subject = EmailSubject.Text 郵件主題 MailObject.Body = EmailBody.Text 主體,即郵件內(nèi)容 MailObject.BodyFormat = MailFormat.Text 設(shè)置郵件內(nèi)容格式,Text 為文本,Html 為超文本 MailObject.BodyEncoding 設(shè)置編碼類(lèi)型,參考有 ascii Dim MailAttachment As String 定義附件,這里不知道用 string 好還是可變的 stringbuilder 好 MailAttachment = EmailAttachment.PostedFile.FileName lenth 變量控制附件大小,但是頁(yè)面和服務(wù)器的設(shè)置如果不對(duì)的話會(huì)很麻煩 If MailAttachment Then MailObject.Attachments.Add(New MailAttachment(MailAttachment) SMTPMail.SMTPServer = localhost 指定使用缺省的 SMTP 服務(wù)器,測(cè)試了很多次外網(wǎng)的郵件服務(wù)器都需要驗(yàn)證,而這個(gè)又沒(méi)有驗(yàn)證,所以就用自己 Win2003 建的郵件服務(wù)器做測(cè)試 SMTPMail.Send(MailObject) 調(diào)用 System.Web.Mail.send 發(fā)送郵件 panelSendEmail.Visible = False panelMailSent.Visible = True End Sub發(fā)送腳本部分完第 14 頁(yè) 共 17 頁(yè)html 定義變量 點(diǎn)擊處理事件判斷是否發(fā)送成功郵件已經(jīng)成功發(fā)送,歡迎您使用!2、郵件收件箱主要代碼:隨機(jī)數(shù)產(chǎn)生函數(shù):(作用是產(chǎn)生隨機(jī)數(shù),在注冊(cè)時(shí)產(chǎn)生驗(yàn)證)function getGRSN()定義dim theGRSNRandomizetheGRSN = Int(9999999 * Rnd) + 1)讓 99999999 乘以隨機(jī)數(shù) rnd 的和加 1 并取整getGRSN = GRSN= & CStr(theGRSN)end function定義郵箱空間使用率:dim bfif maxsize 0 thenbf = CInt(100 * CLng(cursize / 1000) / maxsize)elsebf = 100end if列表:set ei = server.createobject(easymail.InfoList)顯示郵件主要函數(shù):set ei = server.createobject(easymail.emmail)4 4軟件測(cè)試軟件測(cè)試通過(guò)對(duì)自己搭建 WinWebmail 郵件服務(wù)器,設(shè)置域名 ,經(jīng)過(guò)以下測(cè)試可以得出:(1)、因?yàn)榘l(fā)送郵件使用的是 System.Web.Mail 命令空間,所以單獨(dú)運(yùn)行時(shí)(此時(shí)需要獨(dú)立的 SMTP 服務(wù)器)可以送帶附件的郵件,可能是類(lèi)的不同,所以集成到 WinWebmail 時(shí)不能發(fā)送帶附件的郵件,但這個(gè)功能是實(shí)現(xiàn)了的。第 15 頁(yè) 共 17 頁(yè)(2)、接收郵件可以完成,但是帶附件的郵件無(wú)法測(cè)試,域與域之間的郵件協(xié)議傳輸參考比較少,所以沒(méi)有做測(cè)試,就單域環(huán)境來(lái)說(shuō),用系統(tǒng)自帶的組件發(fā)送的郵件去接收,格式統(tǒng)一,能接收。(3)、郵件優(yōu)先級(jí)問(wèn)題依然沒(méi)有完成。System.Web.Mail 命令空間使用low、normal、hight 分別來(lái)表示低,中和高,但無(wú)論用哪個(gè)都顯示為正常,原因可能也是組件接口問(wèn)題。經(jīng)過(guò)以上測(cè)試,郵件發(fā)送功能基本能實(shí)現(xiàn)。結(jié)結(jié)論論本系統(tǒng)是基于.NET2.0 框架基礎(chǔ)上,調(diào)用 System.Web.Mail 命名空間和第三方組件,設(shè)計(jì)和開(kāi)發(fā)的 Web Mail 郵件系統(tǒng),能實(shí)現(xiàn)帶附件的郵件的發(fā)送和接收。使用 Web Mail 郵件系統(tǒng)結(jié)合 IIS 組件,增強(qiáng)了 Web 收發(fā)系統(tǒng)的事務(wù)處理能力, 用戶只需要提供接入互聯(lián)網(wǎng)的瀏覽器,就能進(jìn)行郵件的收發(fā),克服了傳統(tǒng)的郵件系統(tǒng) C/S 模式,非常方便、快捷。通過(guò)測(cè)試,發(fā)現(xiàn)了一些不足:1、調(diào)用郵件收發(fā)系統(tǒng)的接口沒(méi)有統(tǒng)一;2、不同郵件組件或者不同公司組件的調(diào)用不相兼容。在設(shè)計(jì)過(guò)程中,界面的設(shè)計(jì)始終不是特別友好,以今后的學(xué)習(xí)生活中我會(huì)繼續(xù)完善這個(gè) Web Mail 郵件系統(tǒng)。這次畢業(yè)設(shè)計(jì)讓我對(duì)郵件技術(shù)的原理及工作方式等有了較深入的理解。通過(guò)對(duì)設(shè)計(jì)學(xué)習(xí)過(guò)程,深深感覺(jué)到軟件工程每一個(gè)步驟都是不可或缺的。以前只是簡(jiǎn)單的認(rèn)為,軟件工程的這一套就是寫(xiě)代碼,寫(xiě)程序,但現(xiàn)在覺(jué)得重要的是方法,怎么樣去實(shí)現(xiàn),基于哪一種開(kāi)發(fā)環(huán)境和語(yǔ)言并不重要,會(huì)用或者說(shuō)習(xí)慣就行。如果方法不對(duì),到了軟件代碼的編寫(xiě)階段再做更改需求分析這一類(lèi)的工作的話,是很困難的,甚至軟件的架構(gòu)都要做相當(dāng)大的改動(dòng)。當(dāng)然,畢業(yè)設(shè)計(jì)不僅僅是為了設(shè)計(jì)而設(shè)計(jì),它要求我們?nèi)W(xué)習(xí)很多知識(shí),結(jié)合工作中的體會(huì),對(duì)今后的學(xué)習(xí)和工作有著非常重要的意義。參考文獻(xiàn)參考文獻(xiàn)1韋宇,陳志剛. 電腦程序開(kāi)發(fā)與應(yīng)用J.基于 SMTP 的郵件程序設(shè)計(jì),2000,(3):32-35。2曹建文,黃志平,魏新莉. ASP.NET 高級(jí)編程M. 北京:電子工業(yè)出版社,2004.3賀紅心,謝紅濤,卜淮源.微型機(jī)設(shè)計(jì)與應(yīng)用J.WEB郵件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),2003,(3):59。4郭雷兵,寒楓,宋雨. 航空計(jì)算技術(shù)J. 基于 WEB 的郵件發(fā)送技術(shù),2003, (7):126。第 16 頁(yè) 共 17 頁(yè)5范莉莉. 基于 Linux 的 Web 郵件系統(tǒng)的設(shè)計(jì)J.WEB 郵件系統(tǒng)設(shè)計(jì)(Linux), 2003, (5): 96-103。6趙海雁. 山西電子技術(shù)J.E-mail 的安全漏洞與安全防范,2006,(1):76-84。7王興眾, 楊柳. ASP 從入門(mén)到精通M.北京:人民郵電出版社,2003。第 17 頁(yè) 共 17 頁(yè)致致 謝謝在本論文撰寫(xiě)和程序設(shè)計(jì)過(guò)程中,得到了李誼瑞和索望老師的大力支持和幫助,并指導(dǎo)我完成本論文。由于工作的原因,沒(méi)辦法使用學(xué)校的圖書(shū)資源, 只能與老師通過(guò)郵件和電話保持聯(lián)系。在我的論文的寫(xiě)作過(guò)程中,李誼瑞和索望老師多次給我指出論文的不足之處,并給我提出了寶貴的意見(jiàn),沒(méi)有兩位老師的指點(diǎn),我就不會(huì)按時(shí)的完成論文。 再次謝謝索老師的幫助!在論文完成過(guò)程中,本人還得到了其他老師和許多同學(xué)的熱心幫助,本人向他們表示深深的謝意!最后向在百忙之中評(píng)審本文的各位專(zhuān)家、老師表示衷心的感謝!作者簡(jiǎn)介姓 名: 葉科 性別: 男出生年月:1984-9 民族: 漢E-mail:第 18 頁(yè) 共 17 頁(yè)聲聲 明明本論文的工作是 2007 年 2 月至 2007 年 6 月在成都信息工程學(xué)院網(wǎng)絡(luò)工程系完成的。文中除了特別加以標(biāo)注地方外,不包含他人已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機(jī)構(gòu)的學(xué)位或證書(shū)而使用過(guò)的材料。除非另有說(shuō)明,本文的工作是原始性工作。關(guān)于學(xué)位論文使用權(quán)和研究成果知識(shí)產(chǎn)權(quán)的說(shuō)明本人完全了解成都信息工程學(xué)院有關(guān)保管使用學(xué)位論文的規(guī)定,其中包括:(1)學(xué)校有權(quán)保管并向有關(guān)部門(mén)遞交學(xué)位論文的原件與復(fù)印件。(2)學(xué)??梢圆捎糜坝?、縮印或其他復(fù)制方式保存學(xué)位論文。(3)學(xué)??梢詫W(xué)術(shù)交流為目的復(fù)制、贈(zèng)送和交換學(xué)位論文。(4)學(xué)校可允許學(xué)位論文被查閱或借閱。(5)學(xué)??梢怨紝W(xué)位論文的全部或部分內(nèi)容(保密學(xué)位論文在解密后遵守此規(guī)定) 。除非另有科研合同和其他法律文書(shū)的制約,本論文的科研成果屬于成都信息工程學(xué)院。特此聲明! 作者簽名: 年 月 日
收藏