版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于WEB的電子郵件系統(tǒng)郵件協(xié)議研究與系統(tǒng)功能實(shí)現(xiàn)</p><p> 摘要:通過分析JavaMail的實(shí)現(xiàn)原理,采用開源框架Struts,Spring,Hibernate和面向?qū)ο蟮姆椒▽?shí)現(xiàn)基于WEB的電子郵件系統(tǒng)功能。論文研究了接收郵件的和解析郵件的工作原理,并闡述了如何實(shí)現(xiàn)。本系統(tǒng)中我主要負(fù)責(zé)用戶注冊(cè)、登陸、退出、接收站內(nèi)信、讀取站內(nèi)信、移動(dòng)站內(nèi)信、刪除站內(nèi)信、設(shè)置其他郵箱、收取其他郵
2、箱郵件、解析其他郵箱郵件、刪除其他郵箱郵件、系統(tǒng)管理等功能的實(shí)現(xiàn)。</p><p> 關(guān)鍵詞:JavaMail;Struts;Spring;Hibernate </p><p> system based on web with e protocol and system functions</p><p> Abstract:Through analysis
3、 JavaMail of the realization of the principle of open-source framework for the use of Struts, Spring, Hibernate and object-oriented method of web-based e system. Research papers to receive e messages and the work of anal
4、ytic theory, and explained , login, exit, receiving station within the letter, read a letter station, mobile station letter letter to delete stations, set up other mail, receive mail to other e Mail resolve to delete the
5、 other E messages, the system manag</p><p> Keywords: JavaMail;Struts;Spring;Hibernate </p><p><b> 目錄</b></p><p><b> 第1章 引言4</b></p><p> 1.
6、1 基于WEB的電子郵件選題目的和意義4</p><p> 1.2 基于WEB的電子郵件國內(nèi)外研究現(xiàn)狀5</p><p> 1.3 基于WEB的電子郵件系統(tǒng)開發(fā)研究方法與策略6</p><p> 1.4 基于WEB的電子郵件系統(tǒng)軟件開發(fā)的可行性6</p><p> 1.5 系統(tǒng)開發(fā)與運(yùn)行環(huán)境6</p><
7、p> 1.5.1 系統(tǒng)開發(fā)環(huán)境6</p><p> 1.5.2 軟件運(yùn)行環(huán)境7</p><p> 第2章 系統(tǒng)開發(fā)相關(guān)技術(shù)8</p><p> 2.1 Struts簡介8</p><p> 2.1.1 優(yōu)點(diǎn):8</p><p> 2.1.2 缺點(diǎn):8</p><p>
8、; 2.2 Spring簡介9</p><p> 2.3 Hibernate簡介9</p><p> 2.4 MVC簡介10</p><p> 2.5 JavaMail API研究10</p><p> 2.5.1 JavaMail API簡介10</p><p> 2.5.2 相關(guān)協(xié)議一覽11
9、</p><p> 2.5.3 JavaMail安裝12</p><p> 2.5.4 JavaMail API 詳解13</p><p> 2.5.5 使用JavaMail API17</p><p> 2.5.6 郵件認(rèn)證18</p><p> 第3章 概要設(shè)計(jì)19</p><
10、;p> 第4章 詳細(xì)設(shè)計(jì)與編碼實(shí)現(xiàn)20</p><p> 4.1 程序包的結(jié)構(gòu)20</p><p> 4.2系統(tǒng)的功能模塊的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)20</p><p> 4.2.1 用戶注冊(cè)登錄模塊20</p><p> 4.2.2 站內(nèi)接收郵件模塊23</p><p> 4.2.3 其他郵箱模塊
11、26</p><p> 4.2.4 系統(tǒng)管理模塊29</p><p><b> 第5章 結(jié)論30</b></p><p> 第6章 參考文獻(xiàn)32</p><p> 第7章 致謝錯(cuò)誤!未定義書簽。</p><p><b> 第1章 引言</b></p&g
12、t;<p> 1.1 基于WEB的電子郵件選題目的和意義</p><p> 電子郵件是80年代初新起的一種基于計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),采用存儲(chǔ)和轉(zhuǎn)發(fā)方式傳遞交換信息的快捷,高效,廉價(jià)的電子信息業(yè)務(wù),是計(jì)算機(jī)互聯(lián)網(wǎng)系統(tǒng)中提供的一項(xiàng)基本服務(wù)。</p><p> 電子郵件作為一種現(xiàn)代化通信工具可以傳遞文字,圖表,聲音,電影等各類信息,其傳遞速度也是傳統(tǒng)郵件所無法比擬的。其主要應(yīng)用領(lǐng)域
13、是電子郵件服務(wù)。用戶將要發(fā)送的信息以規(guī)定的格式通過通信網(wǎng)絡(luò)發(fā)送到收信人的信箱中,信箱實(shí)際上與通信網(wǎng)絡(luò)相連的計(jì)算機(jī)存儲(chǔ)器,收信人可以通過通信網(wǎng)絡(luò)隨時(shí)打開自己的信箱,看到別人發(fā)來的信件,同時(shí)可以利用自己的信箱寫回信或發(fā)送信件。</p><p> 電子郵件服務(wù)在信息的交流,傳播,檢索,管理等領(lǐng)域的應(yīng)用越來越廣泛,隨著電子郵件數(shù)量的增加,需求多樣化,電子郵件技術(shù)的發(fā)展趨勢(shì)也越趨于更細(xì)致化,更復(fù)雜化。作為電子郵件的信息服
14、務(wù)平臺(tái)的郵件系統(tǒng)使整個(gè)電子郵件世界的核心,也是個(gè)性化增值信息服務(wù)的關(guān)鍵技術(shù)。電子郵件系統(tǒng)是在模擬郵政系統(tǒng)基礎(chǔ)上,汲取電報(bào),電傳,傳真技術(shù)和計(jì)算機(jī)信息技術(shù)的精華,利于處處轉(zhuǎn)發(fā)的通信方式,在開放系統(tǒng)互聯(lián)國際標(biāo)準(zhǔn)中形成為網(wǎng)絡(luò)用于傳送消息和文件提供一個(gè)可靠,異步,垮平臺(tái)的機(jī)制,可以實(shí)現(xiàn)點(diǎn)到點(diǎn)和點(diǎn)到多結(jié)點(diǎn)上的網(wǎng)絡(luò)用戶間的通信。</p><p> 電子郵件系統(tǒng)經(jīng)過幾十年的發(fā)展,已經(jīng)形成了完善的技術(shù)體系。電子郵件系統(tǒng)的發(fā)展經(jīng)
15、歷了遠(yuǎn)程登陸模式,專用客服端模式,基于WEB的模式,目前正向WAP模式遷移。隨著互聯(lián)網(wǎng)的飛速發(fā)展,電子郵件的用戶數(shù)量也業(yè)務(wù)量的急增,種類繁多的商業(yè)增值服務(wù)需求以及用戶對(duì)服務(wù)種類的智能化需求,向負(fù)載它們的電子郵件系統(tǒng)服務(wù)的種類,容量,技術(shù)支持,付費(fèi)方式等方面提出了挑戰(zhàn)。郵件服務(wù)系統(tǒng)在保留了電子郵件系統(tǒng)最初的收發(fā)郵件,郵件存儲(chǔ)等基本功能的同時(shí),融入了最新的計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù),是電子郵件系統(tǒng)有了全新的改觀。</p><p&g
16、t; 電子郵件已經(jīng)成為人們喜愛的通信方式之一,是信息交流的重要手段之一,也是單位加強(qiáng)信息交流的重要手段。在我國信息化的過程中,郵件系統(tǒng)已經(jīng)成為信息系統(tǒng)中必不可少的一部分。傳統(tǒng)的郵件系統(tǒng)分為郵件服務(wù)器和客服端,即ClientServer(CS)結(jié)構(gòu)。用戶通過郵件客戶端來接受和發(fā)送郵件。近年來隨著web技術(shù)的不斷成熟,采用瀏覽器和服務(wù)器BrowserServer形式的軟件層出不窮,并在實(shí)際應(yīng)用中得到了良好的效果。BS結(jié)構(gòu)同傳統(tǒng)的CS結(jié)構(gòu)相
17、比具有對(duì)客戶機(jī)的低要求,較低的開發(fā)成本,方便的維護(hù),軟件的高復(fù)用性等優(yōu)點(diǎn)。</p><p> 因此,系統(tǒng)采用BS結(jié)構(gòu),即用戶以web方式進(jìn)行接收和發(fā)送郵件。</p><p> 1.2 基于WEB的電子郵件國內(nèi)外研究現(xiàn)狀</p><p> 國內(nèi)很多企事業(yè)單位都有自己的郵件服務(wù)系統(tǒng),免費(fèi)郵箱有163,新浪等,用戶對(duì)電子郵件安全性、可靠性及功能上的要求也在不斷提高。
18、因此,電子郵件服務(wù)供應(yīng)商必須提供更安全、更可靠、功能更豐富的服務(wù),才能發(fā)展業(yè)務(wù),吸引用戶,從眾多競爭者中脫穎而出。如何構(gòu)建高效、穩(wěn)定、安全、易用、可擴(kuò)展、功能豐富的電子郵件系統(tǒng)是眾多電信運(yùn)營商、ISP(Internet Service Provider)、ICP(Internet Content Provider)共同面臨的問題。郵件服務(wù)器供應(yīng)商致力于以下幾個(gè)方面提高郵件服務(wù)功能:</p><p> (1)增加
19、多用戶模板的功能,以滿足不同用戶對(duì)界面的不同喜好,如提供多種郵件webmail頁面風(fēng)格,提供個(gè)性化模板和多風(fēng)格信紙,用戶可以定義郵件系統(tǒng)界面等。</p><p> (2)增加防病毒模塊,以增加E統(tǒng)整體的安全性,利用郵件加密和郵件簽名等方法進(jìn)行郵件傳送。在服務(wù)器端使用防病毒模塊。將電子郵件系統(tǒng)向統(tǒng)一信息系統(tǒng)發(fā)展,加入最新資訊,多媒體等功能。反垃圾郵件為用戶提供反垃圾郵件的多種過濾器,充分保證用戶收到最低限度的垃圾
20、郵件騷擾。</p><p> 1.3 基于WEB的電子郵件系統(tǒng)開發(fā)研究方法與策略</p><p> (1)查看163郵箱、郵箱等,研究它們的實(shí)現(xiàn)方式,結(jié)合自己要實(shí)現(xiàn)的系統(tǒng)找到合適的切入點(diǎn)。</p><p> (2)本課題要求對(duì)MVC有一定的掌握,熟悉Struts、Spring、Hibernate、MySQL、Tomcat的使用,以及有較強(qiáng)的自學(xué)能力和熟練使用M
21、yElipse開發(fā)環(huán)境的能力。</p><p> (3)對(duì)于技術(shù)難題先查資料,找不到答案詢問同學(xué)和老師,請(qǐng)求幫助。</p><p> 1.4 基于WEB的電子郵件系統(tǒng)軟件開發(fā)的可行性</p><p><b> (1)技術(shù)可行性</b></p><p> 本系統(tǒng)主要用到開源框架Struts、Spring、Hiber
22、nate,有很多的書籍和資料介紹如何使用這些框架,JAVA是目前較為流行的技術(shù),有一定的編程基礎(chǔ)就能快速學(xué)習(xí)JAVA,所以在技術(shù)上是可行的。</p><p><b> (2)經(jīng)濟(jì)可行性</b></p><p> 由于本系統(tǒng)是本科畢業(yè)設(shè)計(jì)的題目,這樣的系統(tǒng)對(duì)于大多數(shù)企業(yè)來說不用花費(fèi)高昂的代價(jià)去架設(shè)企業(yè)郵箱,企業(yè)可以使用我們開發(fā)的系統(tǒng)。我們本科生也有充裕的時(shí)間去開發(fā)這
23、樣的一個(gè)系統(tǒng),只需要一臺(tái)電腦和人力,不需要很大的投資。所以在經(jīng)濟(jì)上是可行的。 </p><p><b> (3)操作可行性</b></p><p> 本系統(tǒng)采用當(dāng)前最為流行的技術(shù)Struts+Spring+Hibernate框架去實(shí)現(xiàn),擴(kuò)展性很強(qiáng),對(duì)于以后有比較好的特性也能很快速和方便的添加上去,所以在操作上是可行的。</p><p>
24、1.5 系統(tǒng)開發(fā)與運(yùn)行環(huán)境</p><p> 1.5.1 系統(tǒng)開發(fā)環(huán)境</p><p><b> (1)JAVA環(huán)境</b></p><p> 采用的是JDK1.6,我們要開發(fā)的系統(tǒng)是基于J2EE,需要安裝J2SE,J2SE SDK是開發(fā)任何Java系統(tǒng)必須安裝的工具包。</p><p><b> (2
25、)數(shù)據(jù)庫</b></p><p> 采用的是MySQL5.1,MySQL是最受歡迎的開源SQL數(shù)據(jù)庫管理系統(tǒng),是一個(gè)快捷的、可靠的和易于使用的數(shù)據(jù)庫服務(wù)器。</p><p><b> (3)Web服務(wù)器</b></p><p> 采用的是Tomcat6.0.18解壓版本,Tomcat是Apache-Jarkarta的一個(gè)子項(xiàng)目
26、,是一個(gè)免費(fèi)的、開放源碼的、支持JSP和Servlet技術(shù)的容器,它同時(shí)又是一個(gè)Web服務(wù)器軟件。Tomcat很受廣大程序員的喜歡,因?yàn)樗\(yùn)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能。Tomcat是一個(gè)小型的輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP程序的首選。</p><p> (4)集成開發(fā)工具M(jìn)yEclipse</p
27、><p> MyEclipse是目前最流行的J2EE應(yīng)用集成開發(fā)工具。MyEclipse一經(jīng)出現(xiàn)就以其功能強(qiáng)大、插件豐富的特性贏得了認(rèn)可,其主要的屬性有強(qiáng)大的插件功能、代碼重構(gòu)和代碼自動(dòng)生成功能、快速修復(fù)錯(cuò)誤、調(diào)整組織導(dǎo)入包、彈出窗口進(jìn)行代碼自動(dòng)裝配。由于功能強(qiáng)大,MyEclipse成為J2EE IDE領(lǐng)域的霸主,它能夠很好地與MySQL、Tomcat進(jìn)行集成。本系統(tǒng)中我們選用MyEclipse7.0作為開發(fā)工具。
28、</p><p> 1.5.2 軟件運(yùn)行環(huán)境</p><p><b> (1)軟件系統(tǒng)環(huán)境</b></p><p> Windows XP操作系統(tǒng)、Linux系統(tǒng)。</p><p><b> (2)硬件系統(tǒng)環(huán)境</b></p><p> 普通的計(jì)算機(jī),局域網(wǎng),以及能
29、夠連接上的Internet。</p><p> 第2章 系統(tǒng)開發(fā)相關(guān)技術(shù)</p><p> 2.1 Struts簡介</p><p> Struts只是一個(gè)MVC框架(Framework),用于快速開發(fā)Java Web應(yīng)用。Struts實(shí)現(xiàn)的重點(diǎn)在C(Controller),包括ActionServletRequestProcessor和我們定制的Action
30、,也為V(View)提供了一系列定制標(biāo)簽(Custom Tag)。但Struts幾乎沒有涉及M(Model),所以Struts可以采用JAVA實(shí)現(xiàn)的任何形式的商業(yè)邏輯。 </p><p> 2.1.1 優(yōu)點(diǎn): Struts跟Tomcat、Turbine等諸多Apache項(xiàng)目一樣,是開源軟件,這是它的一大優(yōu)點(diǎn)。使開發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。<
31、;/p><p> Taglib和頁面導(dǎo)航。Taglib是Struts的標(biāo)記庫,靈活動(dòng)用,能大大提高開發(fā)效率。另外,就目前國內(nèi)的JSP開發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開發(fā)自己的標(biāo)記,或許Struts是一個(gè)很好的起點(diǎn)。關(guān)于頁面導(dǎo)航,我認(rèn)為那將是今后的一個(gè)發(fā)展方向,事實(shí)上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開發(fā)者
32、接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢(shì)體現(xiàn)得更加明顯。</p><p> 2.1.2 缺點(diǎn): Taglib是Struts的一大優(yōu)勢(shì),但對(duì)于初學(xué)者而言,卻需要一個(gè)持續(xù)學(xué)習(xí)的過程,甚至還會(huì)打亂你網(wǎng)頁編寫的習(xí)慣,但是,當(dāng)你習(xí)慣了它時(shí),你會(huì)覺得它真的很棒。Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時(shí),也增加了系統(tǒng)的復(fù)雜度。雖然它現(xiàn)在還有不少缺點(diǎn),但它是
33、一種非常優(yōu)秀的J2EE MVC實(shí)現(xiàn)方式。 </p><p> 2.2 Spring簡介</p><p> Spring是一個(gè)輕型容器(light-weight container),其核心是Bean工廠(Bean Factory),用以構(gòu)造我們所需要的M(Model)。在此基礎(chǔ)之上,Spring提供了AOP(Aspect-Oriented Programming, 面向?qū)用娴木幊蹋┑膶?shí)
34、現(xiàn),用它來提供非管理環(huán)境下申明方式的事務(wù)、安全等服務(wù);對(duì)Bean工廠的擴(kuò)展ApplicationContext更加方便我們實(shí)現(xiàn)J2EE的應(yīng)用;DAOORM的實(shí)現(xiàn)方便我們進(jìn)行數(shù)據(jù)庫的開發(fā);Web MVC和Spring Web提供了Java Web應(yīng)用的框架或與其他流行的Web框架進(jìn)行集成。</p><p> 2.3 Hibernate簡介</p><p> Hibernate顧名思義冬眠
35、的意思,相信它的創(chuàng)造者的用意在于用這個(gè)工具將數(shù)據(jù)庫連接持久化層冬眠,關(guān)于Hibernate網(wǎng)上爭論很多,有人說其為工具,有人說其為框架,我相信一個(gè)人有一個(gè)人理解問題的角度,只要處理問題的方法正確就可以了。Hibernate是采用ORM映射機(jī)制的持久層開發(fā)工具,它是JAVA應(yīng)用和關(guān)系數(shù)據(jù)庫之前的橋梁,負(fù)責(zé)JAVA對(duì)象和關(guān)系數(shù)據(jù)之間的映射。內(nèi)部封裝了JDBC訪問數(shù)據(jù)庫的操作,向上層應(yīng)用提供了面向?qū)ο蟮臄?shù)據(jù)庫訪問API,在JAVA應(yīng)用中使用到
36、Hibernate包含如下步驟。</p><p> (1)創(chuàng)建Hibernate配置文件</p><p><b> (2)創(chuàng)建持久類</b></p><p> (3)創(chuàng)建對(duì)象-關(guān)系-映射文件</p><p> (4)通過HibernateAPI編寫訪問數(shù)據(jù)庫的代碼</p><p> 如果
37、想了解Hibernate或者是要學(xué)習(xí)它的人必須要首先了解兩個(gè)比較重要的概念:</p><p> (1)POJO:在Hibernate中理解為數(shù)據(jù)庫表所對(duì)應(yīng)的Domain Object,如果從子面上理解就是無格式普通JAVA對(duì)象,簡單的理解就是一個(gè)不包含邏輯代碼的值對(duì)象。從數(shù)據(jù)層面上看,POJO作為數(shù)據(jù)實(shí)體的對(duì)象化表現(xiàn)形式,也成為實(shí)體。</p><p> (2)ORM:ORM可以理解成一
38、種機(jī)制也可以理解成一種模式,對(duì)象-關(guān)系-映射,我個(gè)人覺得如果想理解它可以和MVC比較,模型-視圖-控制。ORM是把對(duì)象和關(guān)系數(shù)據(jù)庫映射到一起,而MVC是把視圖和模型控制在一起。</p><p> 創(chuàng)建Hibernate的配置文件Hibernate從中讀取和數(shù)據(jù)庫連接的相關(guān)信息,這個(gè)配置文件應(yīng)該位于應(yīng)用的classpath中,主要有兩種形式XML格式和.Properteis信息文件。創(chuàng)建持久化類就是指需要被Hib
39、ernate持久化到數(shù)據(jù)庫中的類,持久化類通常都是模型中的實(shí)體類,符合JavaBean的規(guī)范,包含一些屬性,以及與之對(duì)應(yīng)的get、set方法。</p><p><b> 2.4 MVC簡介</b></p><p> MVC是三個(gè)單詞的縮寫,分別為:模型(Model),視圖(View)和控制Controller)。</p><p> MVC
40、模式的目的就是實(shí)現(xiàn)Web系統(tǒng)的職能分工。 Model層實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,通??梢杂肑avaBean或EJB來實(shí)現(xiàn)。View層用于與用戶的交互,通常用JSP來實(shí)現(xiàn)。Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請(qǐng)求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時(shí)它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。</p><p> 2.5 JavaMail API研究</p>
41、<p> 2.5.1 JavaMail API簡介 </p><p> JavaMail API是讀取、撰寫、發(fā)送電子信息的可選包。我們可用它來建立如Eudora、Foxmail、MS Outlook Express一般的郵件用戶代理程序(Mail User Agent,簡稱MUA)。而不是像sendmail或者其它的郵件傳輸代理(Mail Transfer Agent,簡稱MTA)程序那樣可以傳送
42、、遞送、轉(zhuǎn)發(fā)郵件。從另外一個(gè)角度來看,我們這些電子郵件用戶日常用MUA程序來讀寫郵件,而MUA依賴著 MTA處理郵件的遞送。 </p><p> 2.5.2 相關(guān)協(xié)議一覽 </p><p> 4大信息傳輸協(xié)議: SMTP 、POP 、IMAP 、MIME,上面的4個(gè)協(xié)議,并不是全部,還有NNTP和其它一些協(xié)議可用于傳輸信息,但是由于不常用到,所以本文便不提及了。理解這4個(gè)基本的協(xié)議有助
43、于我們更好的使用JavaMail API。然而JavaMail API是被設(shè)計(jì)為與協(xié)議無關(guān)的,目前我們并不能克服這些協(xié)議的束縛。確切的說,如果我們使用的功能并不被我們選擇的協(xié)議支持。</p><p><b> (1)SMTP</b></p><p> 簡單郵件傳輸協(xié)議定義了遞送郵件的機(jī)制。</p><p><b> (2)POP
44、</b></p><p> POP是一種郵局協(xié)議,目前為第3個(gè)版本,即眾所周知的POP3。POP定義了一種用戶如何獲得郵件的機(jī)制。它規(guī)定了每個(gè)用戶使用一個(gè)單獨(dú)的郵箱。大多數(shù)人在使用POP時(shí)所熟悉的功能并非都被支持,例如查看郵箱中的新郵件數(shù)量。而這個(gè)功能是微軟的Outlook內(nèi)建的,那么就說明微軟 Outlook之類的郵件客戶端軟件是通過查詢最近收到的郵件來計(jì)算新郵件的數(shù)量來實(shí)現(xiàn)前面所說的功能。因此在
45、我們使用JavaMail API時(shí)需要注意,當(dāng)需要獲得如前面所講的新郵件數(shù)量之類的信息時(shí),我們不得不自己進(jìn)行計(jì)算。 </p><p><b> (3)IMAP</b></p><p> IMAP使用在接收信息的高級(jí)協(xié)議,目前版本為第4版,所以也被稱為IMAP4。需要注意的是在使用IMAP時(shí),郵件服務(wù)器必須支持該協(xié)議。從這個(gè)方面講,我們并不能完全使用IMAP來替代P
46、OP,不能期待IMAP在任何地方都被支持。假如郵件服務(wù)器支持IMAP,那么我們的郵件程序?qū)⒛軌蚓哂幸韵卤籌MAP所支持的特性:每個(gè)用戶在服務(wù)器上可具有多個(gè)目錄,這些目錄能在多個(gè)用戶之間共享。 </p><p> 其與POP相比高級(jí)之處顯而易見,但是在嘗試采取IMAP時(shí),我們認(rèn)識(shí)到它并不是十分完美的:由于IMAP需要從其它服務(wù)器上接收新信息,將這些信息遞送給用戶,維護(hù)每個(gè)用戶的多個(gè)目錄,這都為郵件服務(wù)器帶來了高負(fù)
47、載。并且IMAP與POP的一個(gè)不同之處是POP用戶在接收郵件時(shí)將從郵件服務(wù)器上下載郵件,而IMAP允許用戶直接訪問郵件目錄,所以在郵件服務(wù)器進(jìn)行備份作業(yè)時(shí),由于每個(gè)長期使用此郵件系統(tǒng)的用戶所用的郵件目錄會(huì)占有很大的空間, 這將直接導(dǎo)致郵件服務(wù)器上磁盤空間暴漲。 </p><p><b> (4)MIME </b></p><p> MIME并不是用于傳送郵件的協(xié)議
48、,它作為多用途郵件的擴(kuò)展定義了郵件內(nèi)容的格式:信息格式、附件格式等等。一些RFC標(biāo)準(zhǔn)都涉及了MIME: RFC 822, RFC 2045, RFC 2046, RFC 2047。</p><p> (5)NNTP和其它的第三方協(xié)議 </p><p> JavaMail API在設(shè)計(jì)時(shí)考慮到與第三方協(xié)議實(shí)現(xiàn)提供商之間的分離,我們可以很容易的添加一些第三方協(xié)議。</p>&
49、lt;p> 2.5.3 JavaMail安裝 </p><p> (1)安裝JavaMail</p><p> 為了使用JavaMail API,需要下載文件名格式為javamail-[version].zip的文件(這個(gè)文件中包括了JavaMail實(shí)現(xiàn)),并將其中的mail.jar文件添加到CLASSPATH中。這個(gè)實(shí)現(xiàn)提供了對(duì)SMTP、IMAP4、POP3的支持。 <
50、/p><p> (2) 安裝JavaBeans Activation Framework</p><p> 在安裝了JavaMail之后,我們還需要安裝JavaBeans Activation Framework,因?yàn)檫@個(gè)框架是JavaMail API所需要的。如果我們使用J2EE的話,那么我們并無需單獨(dú)下載JavaMail,因?yàn)樗嬖谟贘2EE.jar中,只需將J2EE.jar加入到 C
51、LASSPATH即可。此框架增加了對(duì)任何數(shù)據(jù)塊的分類、以及對(duì)它們的處理的特性。這些特性是JavaMail API需要的。 </p><p> 2.5.4 JavaMail API 詳解</p><p> (1) JavaMail環(huán)境 </p><p> A.JavaMail核心類結(jié)構(gòu) </p><p> 在javax.mail的包下面
52、存在著一些核心類:Session、Message、Address、Authenticator、Transport、Store、Folder。而且在javax.mail.internet包中還有一些常用的子類。 </p><p> B.Session </p><p> Session類定義了基本的郵件會(huì)話,就像 會(huì)話那樣,我們進(jìn)行收發(fā)郵件的工作都是基于這個(gè)會(huì)話的。Session對(duì)象利用
53、了java.util.Properties對(duì)象獲得了郵件服務(wù)器、用戶名、密碼信息和整個(gè)應(yīng)用程序都要使用到的共享信息。 </p><p> Session類的構(gòu)造方法是私有的,所以我們可以使用Session類提供的getDefaultInstance()這個(gè)靜態(tài)工廠方法獲得一個(gè)默認(rèn)的Session對(duì)象: </p><p> Properties props = new Propertie
54、s(); </p><p> Session session = Session.getDefaultInstance(props, null); </p><p> 或者使用getInstance()這個(gè)靜態(tài)工廠方法獲得自定義的Session: </p><p> Properties props = new Properties(); </p>
55、<p> Session session = Session.getInstance(props, null); </p><p> C.Message </p><p> 當(dāng)我們建立了Session對(duì)象后,便可以被發(fā)送的構(gòu)造信息體了。在這里SUN提供了Message類型來幫助開發(fā)者完成這項(xiàng)工作。由于 Message是一個(gè)抽象類,大多數(shù)情況下,我們使用javax.mai
56、l.internet.MimeMessage這個(gè)子類,該類是使用MIME類 型、MIME信息頭的郵箱信息。信息頭只能使用US-ASCII字符,而非ASCII字符將通過編碼轉(zhuǎn)換為ASCII的方式使用。 </p><p> 為了建立一個(gè)MimeMessage對(duì)象,我們必須將Session對(duì)象作為MimeMessage構(gòu)造方法的參數(shù)傳入: </p><p> MimeMessage mess
57、age = new MimeMessage(session); </p><p> 注意:對(duì)于MimeMessage類來講存在著多種構(gòu)造方法,比如使用輸入流作為參數(shù)的構(gòu)造方法。 </p><p> 在建立了MimeMessage對(duì)象后,我們需要設(shè)置它的各個(gè)part,對(duì)于MimeMessage類來說,這些part就是MimePart接口。最基本的設(shè)置信息內(nèi)容的方法就是通過表示信息內(nèi)容和米
58、么類型的參數(shù)調(diào)用setContent()方法: </p><p> message.setContent("lgpzll", "textplain"); </p><p> 然而,如果我們所使用的MimeMessage中信息內(nèi)容是文本的話,我們便可以直接使用setText()方法來方便的設(shè)置文本內(nèi)容。 </p><p>
59、 message.setText("lgpzll"); </p><p> 前面所講的兩種方法,對(duì)于文本信息,后者更為合適。而對(duì)于其它的一些信息類型,比如HTML信息,則要使用前者。 </p><p> 使用setSubject()方法對(duì)郵件設(shè)置郵件主題:</p><p> message.setSubject("First&qu
60、ot;); </p><p> D.Address </p><p> 像Message一樣,Address類也是一個(gè)抽象類,所以使用javax.mail.internet.InternetAddress這個(gè)子類。 </p><p> 通過傳入代表郵件地址的字符串,我們可以建立一個(gè)郵件地址類: </p><p> Address ad
61、dress = new InternetAddress("lgpzll163"); </p><p> 如果要在郵件地址后面增加名字的話,可以通過傳遞兩個(gè)參數(shù):代表郵件地址和名字的字符串來建立一個(gè)具有郵件地址和名字的郵件地址類: </p><p> Address address = new InternetAddress("lgpzll163 "
62、;, "lgpzll"); </p><p> 在建立了郵件地址類后,我們通過message的setFrom()和setReplyTo()兩種方法設(shè)置郵件的發(fā)信人: </p><p> message.setFrom(address); </p><p> message.setReplyTo(address); </p>&
63、lt;p> 若在郵件中存在多個(gè)發(fā)信人地址,我們可用addForm()方法增加發(fā)信人: </p><p> Address address[] =””;</p><p> message.addFrom(address); </p><p> 為了設(shè)置收信人,我們使用addRecipient()方法增加收信人,此方法需要使用Message.Recipie
64、ntType的常量來區(qū)分收信人的類型: </p><p> message.addRecipient(type, address) </p><p> 下面是Message.RecipientType的三個(gè)常量: </p><p> Message.RecipientType.TO 收件人</p><p> Message.Rec
65、ipientType.CC 抄送人</p><p> Message.RecipientType.BCC 發(fā)件人</p><p> E.Authenticator </p><p> 像java.net類那樣,JavaMail API通過使用授權(quán)者類(Authenticator)以用戶名、密碼的方式訪問那些受到保護(hù)的資源,在這里“資源”就是指郵件服務(wù)器。
66、在 javax.mail包中可以找到這個(gè)JavaMail的授權(quán)者類(Authenticator)。 </p><p> 在使用Authenticator這個(gè)抽象類時(shí),我們必須采用繼承該抽象類的方式,并且該繼承類必須具有返回 PasswordAuthentication對(duì)象(用于存儲(chǔ)認(rèn)證時(shí)要用到的用戶名、密碼)getPasswordAuthentication()方 法。并且要在Session中進(jìn)行注冊(cè),使Ses
67、sion能夠了解在認(rèn)證時(shí)該使用哪個(gè)類。 </p><p> 下面代碼片斷中的MyAuthenticator就是一個(gè)Authenticator的子類。 </p><p> Properties props = new Properties(); </p><p> Authenticator auth = new MyAuthenticator(); </
68、p><p> Session session = Session.getDefaultInstance(props, auth); </p><p> F.Transport </p><p> 在發(fā)送信息時(shí),Transport類將被用到。這個(gè)類實(shí)現(xiàn)了發(fā)送信息的協(xié)議(通稱為SMTP),此類是一個(gè)抽象類,我們可以使用這個(gè)類的靜態(tài)方法send()來發(fā)送消息: <
69、/p><p> Transport.send(message); 也可由Session獲得相應(yīng)協(xié)議對(duì)應(yīng)的Transport實(shí)例。并通過傳遞用戶名、密碼、郵件服務(wù)器主機(jī)名等參數(shù)建立與郵件服務(wù)器的連接,并使用sendMessage()方法將信息發(fā)送,最后關(guān)閉連接: </p><p> message.saveChanges(); </p><p> Transport
70、 transport = session.getTransport("smtp"); </p><p> transport.connect(.setDebug(true)。 </p><p> G.Store和Folder </p><p> 接收郵件和發(fā)送郵件很類似都要用到Session。但是在獲得Session后,我們需要從Sessi
71、on中獲取特定類型的Store,然后連接到Store,這里的Store代表了存儲(chǔ)郵件的郵件服務(wù)器。在連接Store的過程中,極有可能需要用到用戶名、密碼或者Authenticator。 </p><p> Store store = session.getStore("pop3"); </p><p> store.connect((Folder.READ_ONLY
72、); </p><p> Message message[] = folder.getMessages(); </p><p> 首先從Store中獲得INBOX這個(gè)Folder(對(duì)于POP3協(xié)議只有一個(gè)名為INBOX的Folder有效),然后以只讀(Folder.READ_ONLY)的方式打開Folder,最后調(diào)用Folder的getMessages()方法得到目錄中所有Messag
73、e的數(shù)組。對(duì)于POP3協(xié)議只有一個(gè)名為INBOX的Folder有效,而對(duì)于IMAP協(xié)議,我們可以訪問多個(gè)Folder而且SUN在設(shè)計(jì)Folder的getMessages()方法時(shí)采取了很智能的方式:首先接收新郵件列表,然后再需要的時(shí)候(比如讀取郵件內(nèi)容)才從郵件服務(wù)器讀取郵件內(nèi)容。 </p><p> 在讀取郵件時(shí),我們可以用Message類的getContent()方法接收郵件或是writeTo()方法將郵件
74、保存,getContent()方法只接收郵件內(nèi)容(不包含郵件頭),而writeTo()方法將包括郵件頭。 </p><p> 在讀取郵件內(nèi)容后,關(guān)閉Folder和Store。 </p><p> folder.close(boolean);</p><p> store.close(); </p><p> 傳遞給Folder.clo
75、se()方法的boolean 類型參數(shù)表示是否在刪除操作郵件后更新Folder。 </p><p> 2.5.5 使用JavaMail API </p><p><b> (1)發(fā)送郵件 </b></p><p> 在獲得了Session后,建立并填入郵件信息,然后發(fā)送它到郵件服務(wù)器。這便是使用Java Mail API發(fā)送郵件的過程,在
76、發(fā)送郵件之前,我們需要設(shè)置SMTP服務(wù)器:通過設(shè)置Properties的mail.smtp. session = Session.getDefaultInstance(props, null); </p><p> MimeMessage message = new MimeMessage(session); </p><p> message.setFrom(new Internet
77、Address(from)); </p><p> message.addRecipient(Message.RecipientType.TO, </p><p> new InternetAddress(to)); </p><p> message.setSubject("lgpzll"); </p><p>
78、 message.setText("lgpzll"); </p><p> Transport.send(message); </p><p><b> (2)接收郵件 </b></p><p> 讀取郵件,獲得session,并且連接到了郵箱的相應(yīng)store,打開相應(yīng)的Folder,然后得到想要的郵件,結(jié)束時(shí)關(guān)閉連接
79、。 </p><p> String session = Session.getDefaultInstance(props, null); </p><p> Store store = session.getStore("pop3"); </p><p> store.connect((Folder.READ_ONLY); </p
80、><p> Message message[] = folder.getMessages(); </p><p> folder.close(false); </p><p> store.close(); </p><p> 2.5.6 郵件認(rèn)證 </p><p> 我們?cè)诖巳〈酥苯邮褂绵]件服務(wù)器主機(jī)名、用戶
81、名、密碼這三個(gè)字符串作為連接到POP3 Store的方式,使用存儲(chǔ)了郵件服務(wù)器主機(jī)名信息的屬性文件,并在獲得Session時(shí)傳入自定義的Authenticator實(shí)例: </p><p> Properties props = System.getProperties();</p><p> props.put("mail.pop3. mailsession = Sessio
82、n.getDefaultInstance(props,</p><p> new CheckPassword(userName, password));</p><p> Store store = mailsession.getStore("pop3");</p><p> store.connect(pop3Server, userNa
83、me, password);</p><p> CheckPassword類繼承了抽象類Authenticator,并且通過重載Authenticator類的 getPasswordAuthentication()方法返回PasswordAuthentication類對(duì)象。而 getPasswordAuthentication()方法的參數(shù)param是以逗號(hào)分割的用戶名、密碼組成的字符串。 </p>
84、<p> package com.mail.othermail;</p><p> import javax.mail.Authenticator;</p><p> import javax.mail.PasswordAuthentication;</p><p> public class CheckPassword extends Aut
85、henticator {</p><p> String username;</p><p> String password;</p><p> public CheckPassword() {</p><p><b> }</b></p><p> public CheckPassw
86、ord(String username, String password) {</p><p> this.username = username;</p><p> this.password = password;</p><p><b> }</b></p><p> protected PasswordA
87、uthentication getPasswordAuthentication() {</p><p> return new PasswordAuthentication(username, password);</p><p><b> }</b></p><p> public String getUsername() {</
88、p><p> return username;</p><p><b> }</b></p><p> public void setUsername(String username) {</p><p> this.username = username;</p><p><b>
89、 }</b></p><p> public String getPassword() {</p><p> return password;</p><p><b> }</b></p><p> public void setPassword(String password) {</p&g
90、t;<p> this.password = password;</p><p><b> }</b></p><p><b> }</b></p><p><b> 第3章 概要設(shè)計(jì)</b></p><p> 基于Web的電子郵件系統(tǒng)概要設(shè)計(jì)由我的搭檔
91、實(shí)現(xiàn)。</p><p> 第4章 詳細(xì)設(shè)計(jì)與編碼實(shí)現(xiàn)</p><p> 4.1 程序包的結(jié)構(gòu)</p><p> com.mail.dao中是所有接口</p><p> com.mail.filter中是過濾器</p><p> com.mail.impl中是所有接口的實(shí)現(xiàn)</p><p&g
92、t; com.mail.othermail中是管理其他郵箱</p><p> com.mail.page中是分頁的處理類</p><p> com.mail.struts.action中是業(yè)務(wù)邏輯 </p><p> com.mail.struts.form中是form表單</p><p> com.mail.util中是工具類&l
93、t;/p><p> com.mail.vo中是實(shí)體類</p><p> 4.2系統(tǒng)的功能模塊的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p> 4.2.1 用戶注冊(cè)登錄模塊</p><p> (1)用戶注冊(cè)登陸模塊詳細(xì)設(shè)計(jì)</p><p> 公共Action如下圖所示,所有的Action都繼承自BaseAction,在Actio
94、n中使用super.getCurrentUser()可以從session中獲取用戶的實(shí)例。</p><p> 圖4-1 公共Action</p><p> Fig.4-1 Public Action</p><p> 用戶實(shí)體類User如下圖所示 </p><p> 圖4-2 用戶實(shí)體類</p><p> F
95、ig.4-2 the entity of User</p><p> 用戶首先注冊(cè)然后登陸,登陸后可以修改密碼,用戶注冊(cè)登陸模塊的UserAction如下圖所示</p><p> 圖4-3 用戶Action</p><p> Fig.4-3 the action of UserAction</p><p> 用戶注冊(cè)登陸模塊Actio
96、n中的方法實(shí)現(xiàn)調(diào)用接口IUserDAO中的方法,IUserDAO接口中的方法由IUserDAOImpl具體實(shí)現(xiàn),IUserDAO如下圖所示</p><p> 圖4-4 用戶模塊接口</p><p> Fig.4-4 the interface of user module</p><p> (2)用戶注冊(cè)登陸模塊的實(shí)現(xiàn)方式</p><p&g
97、t;<b> A.用戶注冊(cè)</b></p><p> 用戶打開網(wǎng)站即進(jìn)入用戶登陸頁面,如果用戶沒有注冊(cè)那么注冊(cè)調(diào)用UserAction中的register(),將注冊(cè)信息封裝到實(shí)體User的一個(gè)對(duì)象中,通過IUserDAO的register()保存這個(gè)對(duì)象,持久化到數(shù)據(jù)庫中。</p><p><b> B.用戶登陸</b></p>
98、;<p> 用戶成功注冊(cè)后輸入正確的用戶名和密碼就可以登陸系統(tǒng),調(diào)用UserAction中的login()方法,將登陸的用戶名和密碼傳遞給IUserDAO中l(wèi)ogin(),判斷用戶是否存在,如果用戶存在并且密碼正確那就向session中寫入user這個(gè)實(shí)例,跳轉(zhuǎn)到郵箱主頁,如果用戶不存在或密碼不正確提示用戶,讓用戶重新輸入。</p><p><b> C.用戶退出</b>&
99、lt;/p><p> 調(diào)用UserAction中的logout()方法,從session中刪除當(dāng)前用戶實(shí)例,返回到用戶登陸頁面。</p><p><b> D.找回密碼</b></p><p> 當(dāng)用戶忘記密碼的時(shí)候點(diǎn)擊找回密碼調(diào)用UserAction中的findPassword()將你的用戶名傳遞進(jìn)去,然后調(diào)用IUserDAO中的findU
100、ser(String userName)查詢數(shù)據(jù)庫這個(gè)用戶是否存在,如果存在查詢出密碼保護(hù)問題和答案,將密碼保護(hù)問題顯示給用戶,讓用戶輸入答案,如果用戶的答案和數(shù)據(jù)庫中的答案一致那么調(diào)用IUserDAO中的findPassword()方法更新用戶密碼。</p><p><b> E.修改密碼</b></p><p> 用戶登陸成功后可以修改用戶密碼,調(diào)用UserA
101、ction中的updatePasswordInput轉(zhuǎn)向到更新密碼頁面,更新密碼調(diào)用UserAction中的updatePassword()。 </p><p> 4.2.2 站內(nèi)接收郵件模塊</p><p> (1)站內(nèi)接收郵件模塊詳細(xì)設(shè)計(jì)</p><p> 站內(nèi)新郵件、收件箱、垃圾箱、已刪除實(shí)體類Receive,如下圖所示</p><p
102、> 圖4-5 收件箱實(shí)體類</p><p> Fig.4-5 the entity of Inbox</p><p> 其中status字段不同的的值代表郵件所在的郵箱,0代表新郵件在新郵件里,1代表已讀在收件箱里,2代表垃圾郵件在垃圾箱里,3代表已刪除在已刪除里。</p><p> 用戶登陸后可以收郵件,移動(dòng)郵件,刪除郵件,查看郵件,站內(nèi)接收郵件模塊
103、ReceiveAction如下圖所示</p><p> 圖4-6 收件箱Action</p><p> Fig.4-6 the action of Inbox</p><p> 站內(nèi)接收郵件模塊ReceiveAction中的方法實(shí)現(xiàn)調(diào)用接口IReceiveDAO中的方法,IReceiveDAO接口中的方法由IReceiveDAOImpl具體實(shí)現(xiàn),IReceiv
104、eDAO如下圖所示</p><p> 圖4-7 收件箱模塊接口</p><p> Fig.4-7 the Inbox interface module</p><p> (2)站內(nèi)接收郵件模塊的實(shí)現(xiàn)方式</p><p><b> A.新郵件</b></p><p> 用戶登陸成功后點(diǎn)擊新
105、郵件調(diào)用ReceiveAction中的newreceive()方法,通過IReceiveDAO中的queryAllNew()查詢我所有新的郵件,即標(biāo)記字段為0的郵件。</p><p><b> B.收件箱</b></p><p> 調(diào)用ReceiveAction中的AllMail方法查詢我所有的沒有在垃圾箱和已刪除中的郵件,即查詢已讀和未讀郵件,通過IReceiv
106、eDAO中的queryAll()實(shí)現(xiàn)。</p><p> 已刪除:調(diào)用ReceiveAction中的hasDel()方法查詢我已刪除郵件,通過IReceiveDAO中hasDel()實(shí)現(xiàn)。</p><p><b> D.垃圾箱</b></p><p> 調(diào)用ReceiveAction中的dustbinbox()方法查詢我所有垃圾箱中的郵件
107、,通過IReceiveDAO中的queryAllDustbin()方法實(shí)現(xiàn)</p><p><b> E.讀取郵件</b></p><p> 點(diǎn)擊收到的郵件標(biāo)題,進(jìn)入查看郵件詳細(xì)信息,調(diào)用ReceiveAction中的find()方法實(shí)現(xiàn),find()方法中傳遞郵件id通過IReceiveDAO中的query()方法查看郵件詳細(xì)信息。</p><
108、;p> 移動(dòng)到垃圾箱:調(diào)用ReceiveAction中的dustbin()方法,傳遞郵件id,通過IReceiveDAO中的dustbin()方法設(shè)置郵件的狀態(tài)為2。</p><p><b> F.刪除郵件</b></p><p> 只是刪除到已刪除,調(diào)用ReceiveAction中SetDel()方法,傳遞郵件id,通過IReceiveDAO中的setd
109、elete()方法設(shè)置郵件狀態(tài)為3。</p><p><b> G.永久刪除</b></p><p> 刪除數(shù)據(jù)庫中數(shù)據(jù),不能找回,調(diào)用ReceiveAction中的del(),傳遞郵件id,通過IReceiveDAO中的delete()方法刪除數(shù)據(jù)庫中的記錄。</p><p> 4.2.3 其他郵箱模塊</p><p
110、> (1)其他郵箱模塊詳細(xì)設(shè)計(jì)</p><p> 其他郵箱主要是收取其他郵件服務(wù)器上的郵件,需要Internet支持,可以添加其他郵箱、管理其他郵箱,接收郵件,查看郵件,刪除郵件,回復(fù)郵件,使用其他郵箱發(fā)信等功能。</p><p> 用戶郵件地址實(shí)體類Mail,如下圖所示</p><p> 圖4-8 用戶地址實(shí)體類</p><p&g
111、t; Fig.4-8 the entity of User Address</p><p> 郵件服務(wù)器實(shí)體類Server,如下圖所示</p><p> 圖4-9 郵件服務(wù)器實(shí)體類</p><p> Fig.4-9 the entity of mail Server </p><p> 其他郵箱業(yè)務(wù)邏輯和實(shí)現(xiàn)OtherMailAct
112、ion,如下圖所示</p><p> 圖4-10 其他郵箱Action</p><p> Fig.4-10 the action of OtherMailAction</p><p> 其他郵箱列表顯示郵件、顯示郵箱相信、刪除郵件業(yè)務(wù)邏ailAction,如下圖所示</p><p> 圖4-11 郵件Action</p>
113、<p> Fig.4-11 the action ailAction</p><p> 郵件ailManage,如下圖所示,主要獲取從服務(wù)器上下載的郵件列表、計(jì)算郵件數(shù)量、查看郵箱詳情、發(fā)送郵件</p><p> 圖4-12 郵件處理</p><p> Fig.4-12 Mail ()方法查詢我的郵件所在本地服務(wù)器的目錄,將目錄作為參數(shù)ailMa
114、nage的getMailCountLoc()方法查詢我當(dāng)前郵件地址所在本地服務(wù)器的郵件數(shù)量,并將其他郵件地址和郵件數(shù)量列表顯示在頁面。</p><p><b> D.接收郵件</b></p><p> 調(diào)用OtherMailAction中DownMail()方法從郵件服務(wù)器上下載郵件,首先通過通過IMailDAO中的queryByND()查詢我的其他郵箱的郵箱用戶
115、名和用戶密碼以及域名,然后通過IServerDAO的QureyServerByDomain()方法查詢當(dāng)前對(duì)應(yīng)我郵件地址域名的郵件服務(wù)器的pop地址,將這些作為參數(shù)傳遞給UserManage的Recail()方法,這里采用JavaMail API的接口登陸郵件服務(wù)器,這里創(chuàng)建一個(gè)ActiveUser的對(duì)象,然后根據(jù)用戶名,本地郵件服務(wù)器目錄,域名創(chuàng)建當(dāng)前用戶的目錄,啟動(dòng)新線程Recail接收郵件,這里以只讀的方式下載郵件存放在當(dāng)前用戶的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于web的電子郵件系統(tǒng)郵件協(xié)議研究與系統(tǒng)功能實(shí)現(xiàn)(system based on web with e protocol and system functions)
- 畢業(yè)設(shè)計(jì)the system design of data acquisition based on the matlab
- design of laboratory management system based on web
- 畢業(yè)設(shè)計(jì)(論文)phase modulation system simulation based on rof
- 畢業(yè)設(shè)計(jì)(論文)design of fan control system based on plc
- FCA-based E-Government System Modeling and Prototyping System Implementation.pdf
- Web Service Supervision System Based on Jade.pdf
- 畢業(yè)設(shè)計(jì)(論文)design and implementation of online florises sail system based on jsp
- a web-based manufacturing service system for rapid product development
- 畢業(yè)論文(設(shè)計(jì))analysis and realize of a web-based meteorological data user management system
- 畢業(yè)論文(設(shè)計(jì))level control system based on microcomtroller
- Area logistics system based on system dynamics model.pdf
- Area logistics system based on system dynamics model.pdf
- 基于web的課件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(design and realization of courseware system based on web)
- A web-based manufacturing service system for rapid product development.pdf
- A web-based manufacturing service system for rapid product development.pdf
- 畢業(yè)論文(設(shè)計(jì))design of dc motor control system based on microcontroller
- a new decision support system based on datamining
- 基于web的在線問卷調(diào)查系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(the survey system based on web design)
- Design and Implementation of Web Based Entrance Test System using Hibernate Framework.pdf
評(píng)論
0/150
提交評(píng)論