版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 學(xué)士學(xué)位畢業(yè)設(shè)計(jì)(論文)</p><p> E M A I L客 戶 端 ( Java GUI )</p><p> 姓 名 </p><p> 學(xué) 號(hào) </p><p> 年 級(jí) </p><p>
2、 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 系(院) 信 息 學(xué) 院 </p><p> 指導(dǎo)教師 </p><p><b> 摘 要</b></p><p> 本系統(tǒng)是用 java 語(yǔ)言實(shí)現(xiàn)的一個(gè) Email客戶端,主要用到 java GUI 圖形界面設(shè)計(jì)和
3、java mail 工具包, 它適用于所有用戶,無(wú)管理員設(shè)置,可以實(shí)現(xiàn)網(wǎng)絡(luò)郵箱的郵件發(fā)送和郵件收取的基本功能,還具有通訊錄的存儲(chǔ)功能,針對(duì)用戶的需求,本Email客戶端具有以下兩大模塊:</p><p><b> 1.基本設(shè)置模塊;</b></p><p> 此模塊主要包括用戶設(shè)置和郵箱設(shè)置兩大內(nèi)容:</p><p> 1.1 用戶設(shè)置:
4、主要設(shè)置用戶的一些基本信息,如用戶名,用戶密碼等設(shè)置</p><p> 1.2 郵箱設(shè)置:主要設(shè)置郵箱服務(wù)器,SMTP,POP3等</p><p> 2.Email功能模塊;</p><p> 此模塊根據(jù)大眾用戶的需求劃分了以下三個(gè)部分:</p><p> 2.1收取郵件功能;</p><p> 2.2發(fā)送
5、郵件功能;</p><p><b> 2.3通訊錄功能;</b></p><p> 該系統(tǒng)的開(kāi)發(fā)過(guò)程為:</p><p> 1.Email客戶端的需求分析;</p><p> 2.Email客戶端的系統(tǒng)分析;</p><p> 3.Email客戶端的功能模塊劃分劃分;</p>
6、<p> 4.Email客戶端的數(shù)據(jù)庫(kù)設(shè)計(jì);</p><p> 5.Email客戶端的界面設(shè)計(jì);</p><p> 6.Email客戶端的功能模塊設(shè)計(jì)及代碼實(shí)現(xiàn)</p><p> 關(guān)鍵字:java,java GUI,java mail</p><p><b> Abstract</b></p
7、><p> This email client system is developed in java language using java GUI and java mail tools .It can be used by any users who want to use it . The system is not including manager settings and it can finish
8、the function of sending and accepting mails in web mail system, it can store user information a function like a address book in the web. The systems need to achieve the overall function to run two parts, as follows</
9、p><p> 1. The basic settings</p><p> Two parts are followed:</p><p> 1.1 Maintenance System Administrators basic information; </p><p> 1.2 Student response functions;
10、</p><p> 2. Email functions</p><p> Three function will be available</p><p> 2.1 Sending mails</p><p> 2.2 Receiving mails</p><p> 2.3 Address book<
11、;/p><p> The system development process : </p><p> 1. Email client needs analysis; </p><p> 2. Email client system analysis; </p><p> 3. Email client function modules
12、partition; </p><p> 4. Email client design; </p><p> 5. Email client interface design; </p><p> 6. Email client functional design and code modules to achieve </p><p>
13、; Key word:java , java GUI ,java mail</p><p><b> 目 錄</b></p><p><b> 前 言7</b></p><p> 第1章 系統(tǒng)概述及系統(tǒng)分析8</p><p><b> 1.1系統(tǒng)概述8</b>
14、;</p><p> 1.1.1基本設(shè)置模塊8</p><p> 1.1.2 Email功能模塊8</p><p> 1.2 需求分析9</p><p> 1.3 可行性分析9</p><p> 1.3.1技術(shù)可行性分析9</p><p> 1.3.2環(huán)境可行性分析9&l
15、t;/p><p> 1.3.3經(jīng)濟(jì)可行性分析9</p><p> 第2章 系統(tǒng)開(kāi)發(fā)基本介紹10</p><p> 2.1 選題背景與目的10</p><p> 2 .2 系統(tǒng)開(kāi)發(fā)工具10</p><p> 2 .3 系統(tǒng)開(kāi)發(fā)環(huán)境10</p><p> 2 .4開(kāi)發(fā)技術(shù)概述11
16、</p><p> 2 .4.1 J2EE概述11</p><p> 2 .4.2 Java GUI11</p><p> 2 .4.3 Java mail12</p><p> 第3章 系統(tǒng)總體設(shè)計(jì)13</p><p> 3 .1 系統(tǒng)功能模塊劃分13</p><p>
17、3 .2系統(tǒng)具體功能模塊基本介紹14</p><p> 3 .2.1 發(fā)件箱14</p><p> 3 .2.2 收件箱14</p><p> 3 .2.3 通訊錄15</p><p> 第4章 系統(tǒng)詳細(xì)設(shè)計(jì)及系統(tǒng)實(shí)現(xiàn)16</p><p> 4 .1 章節(jié)內(nèi)容總體介紹16</p>&
18、lt;p> 4 .2各模塊功能詳細(xì)設(shè)計(jì)16</p><p> 4 .2.1 發(fā)送郵件功能的實(shí)現(xiàn)16</p><p> 4 .2.1.1 發(fā)送普通郵件功能17</p><p> 4 .2.1.2 郵件附件的功能實(shí)現(xiàn)22</p><p> 4 .2.2 收取郵件功能的實(shí)現(xiàn)23</p><p>
19、4 .2.3 通訊錄功能的實(shí)現(xiàn)30</p><p> 4 .2.4其他功能32</p><p> 4 .2.4.1 其他界面實(shí)現(xiàn)與通訊錄的連接功能32</p><p> 4 .2.4.2 郵件未存儲(chǔ)對(duì)用戶提示功能32</p><p> 4 .2.4.3 復(fù)制、刪除郵件功能34</p><p> 4
20、.2.4.4 用戶信息設(shè)置功能35</p><p><b> 結(jié)束語(yǔ)38</b></p><p><b> 謝 辭39</b></p><p><b> 參考文獻(xiàn)40</b></p><p><b> 前 言</b></p>
21、<p> 郵件系統(tǒng)是一套單獨(dú)的系統(tǒng),要有自己的服務(wù)器,在郵件系統(tǒng)中可以設(shè)多個(gè)域,每個(gè)域中可以設(shè)多個(gè)用戶,比如說(shuō)我買(mǎi)了anymacro或快客的郵件系統(tǒng),可以進(jìn)行多項(xiàng)設(shè)置.它的數(shù)據(jù)是放在自己的服務(wù)器上.</p><p> 隨著信息技術(shù)的提高,網(wǎng)絡(luò)的普及于發(fā)展,越來(lái)越多的網(wǎng)絡(luò)工具隨之產(chǎn)生出來(lái),網(wǎng)絡(luò)郵箱就是其中之一,它可以通過(guò)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)人們之間的通信,可以給人們的工作帶來(lái)極大的方便,同時(shí)也縮短了人與人之
22、間的距離,使人們?cè)谕ㄐ派闲枰ㄙM(fèi)的時(shí)間更短。</p><p> 該Email客戶端不僅僅具有網(wǎng)絡(luò)郵箱的功能,它可以讓用戶綁定多個(gè)郵箱,可以說(shuō)是多個(gè)網(wǎng)絡(luò)郵箱的公共接口,不進(jìn)方便了人們的工作,還做到了有效利用網(wǎng)絡(luò)的信息資源,極大的提高人們的工作效率,減少了很多的工作量。因此它應(yīng)該是能夠得到用戶歡迎的一個(gè)系統(tǒng)。</p><p> 第1章 系統(tǒng)概述及系統(tǒng)分析</p><p&
23、gt;<b> 1.1系統(tǒng)概述</b></p><p> 隨著信息技術(shù)的提高,網(wǎng)絡(luò)的普及于發(fā)展,越來(lái)越多的網(wǎng)絡(luò)工具隨之產(chǎn)生出來(lái),網(wǎng)絡(luò)郵箱就是其中之一,它可以通過(guò)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)人們之間的通信,可以給人們的工作帶來(lái)極大的方便,同時(shí)也縮短了人與人之間的距離,使人們?cè)谕ㄐ派闲枰ㄙM(fèi)的時(shí)間更短。該Email客戶端不僅僅具有網(wǎng)絡(luò)郵箱的功能,它可以讓用戶綁定多個(gè)郵箱,可以說(shuō)是多個(gè)網(wǎng)絡(luò)郵箱的公共接口,不進(jìn)方
24、便了人們的工作,還做到了有效利用網(wǎng)絡(luò)的信息資源,極大的提高人們的工作效率,減少了很多的工作量。該系統(tǒng)的功能模塊主要由以下部分組成:</p><p> 1.1.1基本設(shè)置模塊</p><p> 該模塊可以完成此用戶設(shè)置和郵箱設(shè)置兩大內(nèi)容,其中用戶設(shè)置可以完成用戶的一些基本信息的設(shè)置,包括用戶名、用戶密碼、聯(lián)系方式、郵政編碼、通訊地址、郵箱地址,并可以對(duì)其進(jìn)行存儲(chǔ)、瀏覽、查看、刪除、修改、
25、打印等操作。郵箱設(shè)置可以完成對(duì)所使用郵箱的郵箱服務(wù)器、SMTP、POP3的一些設(shè)置,也可以對(duì)這些設(shè)置進(jìn)行存儲(chǔ)、瀏覽、查看、刪除、修改等操作。</p><p> 1.1.2 Email功能模塊</p><p> 該模塊可以完成網(wǎng)絡(luò)郵箱的收取郵件、發(fā)送郵件、保存郵件的功能,并可以對(duì)這些郵件進(jìn)行存儲(chǔ)、轉(zhuǎn)發(fā)、群發(fā)、瀏覽、刪除、修改、打印等操作。此模塊還具有通訊錄的功能,可以存儲(chǔ)其他網(wǎng)絡(luò)郵箱用戶
26、的用戶名和郵箱地址進(jìn)行存儲(chǔ)、修改等功能。</p><p><b> 1.2 需求分析</b></p><p> Email客戶端的設(shè)計(jì)目的是要為了實(shí)現(xiàn)網(wǎng)絡(luò)郵箱的郵件發(fā)送和收取的以些功能。為使用郵箱的用戶提供便利。系統(tǒng)所面對(duì)的用戶可以是任何普通用戶,系統(tǒng)對(duì)于一個(gè)用戶只允許以一種身份登錄。用戶登錄后可以對(duì)系統(tǒng)進(jìn)行管理,其主要操作是維護(hù)個(gè)人的基本信息,對(duì)其信息進(jìn)行修改、
27、存儲(chǔ)等操作。</p><p> 將系統(tǒng)需求加以總結(jié),得出系統(tǒng)需求如下:</p><p> 系統(tǒng)可以運(yùn)行任何操作系統(tǒng)平臺(tái)上,并具有友好的用戶界面。</p><p> 系統(tǒng)用戶類型為:任何普通用戶。</p><p><b> 1.3 可行性分析</b></p><p> 1.3.1技術(shù)可行性
28、分析</p><p> Java很有雄心的宣言--"write once, run anywhere"許諾:一個(gè)具有下拉菜單,命令按鈕,滾動(dòng)條以及其他常見(jiàn)的GUI控件的應(yīng)用程序?qū)⒛軌蛟诟鞣N操作系統(tǒng)上運(yùn)行而不必重新編譯成針對(duì)某一平臺(tái)的二進(jìn)制代碼,包括Microsoft Windows, Sun’s own Solaris,&
29、#160;Apple’s Mac OS以及Linux。</p><p> 1.3.2環(huán)境可行性分析</p><p> Java很有雄心的宣言--"write once, run anywhere"許諾:一個(gè)具有下拉菜單,命令按鈕,滾動(dòng)條以及其他常見(jiàn)的GUI控件的應(yīng)用程序?qū)⒛軌蛟诟鞣N操作系統(tǒng)上運(yùn)行而不必重新編譯成針對(duì)某
30、一平臺(tái)的二進(jìn)制代碼,包括Microsoft Windows, Sun’s own Solaris, Apple’s Mac OS以及Linux。也就是說(shuō)本系統(tǒng)可以跨平臺(tái)使用.</p><p> 1.3.3經(jīng)濟(jì)可行性分析</p><p> 開(kāi)發(fā)此系統(tǒng)所用軟件可在網(wǎng)絡(luò)上下載使用。</p><p>
31、 第2章 系統(tǒng)開(kāi)發(fā)基本介紹</p><p> 2.1 選題背景與目的</p><p> 隨著信息技術(shù)的提高,網(wǎng)絡(luò)的普及于發(fā)展,越來(lái)越多的網(wǎng)絡(luò)工具隨之產(chǎn)生出來(lái),網(wǎng)絡(luò)郵箱就是其中之一,它可以通過(guò)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)人們之間的通信,可以給人們的工作帶來(lái)極大的方便,同時(shí)也縮短了人與人之間的距離,使人們?cè)谕ㄐ派闲枰ㄙM(fèi)的時(shí)間更短。該Email客戶端不僅僅具有網(wǎng)絡(luò)郵箱的功能,它可以讓用戶綁定多個(gè)郵箱,可以
32、說(shuō)是多個(gè)網(wǎng)絡(luò)郵箱的公共接口,不進(jìn)方便了人們的工作,還做到了有效利用網(wǎng)絡(luò)的信息資源,極大的提高人們的工作效率,減少了很多的工作量。正是因?yàn)樵撓到y(tǒng)所具有的這些優(yōu)點(diǎn)才開(kāi)發(fā)了此系統(tǒng)。</p><p> 2 .2 系統(tǒng)開(kāi)發(fā)工具</p><p> 本系統(tǒng)在開(kāi)發(fā)過(guò)程中使用java GUI和java中java mail工具包實(shí)現(xiàn)了email的收發(fā)和一些基本的管理功能。</p><p
33、> 2 .3 系統(tǒng)開(kāi)發(fā)環(huán)境</p><p> 在軟件環(huán)境方面,系統(tǒng)的開(kāi)發(fā)環(huán)境如下:</p><p> 操作系統(tǒng):S use Linux;</p><p> 開(kāi)發(fā)平臺(tái):java;</p><p> 2 .4開(kāi)發(fā)技術(shù)概述</p><p> 2 .4.1 J2EE概述</p><p>
34、; J2EE是美國(guó)Sun公司剛剛推出的一種全新概念的模型,與傳統(tǒng)的互聯(lián)網(wǎng)應(yīng)用程序模型相比有著不可比擬的優(yōu)勢(shì)。</p><p> 目前,Java 2平臺(tái)有3個(gè)版本,它們是適用于小型設(shè)備和智能卡的Java 2平臺(tái)Micro版(Java 2 Platform Micro Edition,J2ME)、適用于桌面系統(tǒng)的Java 2平臺(tái)標(biāo)準(zhǔn)版(Java 2 Platform Standard Edition,J2SE)、
35、適用于創(chuàng)建服務(wù)器應(yīng)用程序和服務(wù)的Java 2平臺(tái)企業(yè)版(Java 2 Platform Enterprise Edition,J2EE)。J2EE是一種利用Java 2平臺(tái)來(lái)簡(jiǎn)化企業(yè)解決方案的開(kāi)發(fā)、部署和管理相關(guān)的復(fù)雜問(wèn)題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎(chǔ)就是核心Java平臺(tái)或Java 2平臺(tái)的標(biāo)準(zhǔn)版,J2EE不僅鞏固了標(biāo)準(zhǔn)版中的許多優(yōu)點(diǎn),例如"編寫(xiě)一次、隨處運(yùn)行"的特性、方便存取數(shù)據(jù)庫(kù)的JDBC(Java DataBa
36、se Connectivity)應(yīng)用程序接口(API, Application Program Interface)技術(shù)以及能夠在Internet應(yīng)用中保護(hù)數(shù)據(jù)的安全模式等等,同時(shí)還提供了對(duì) EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java</p><p> 2 .4.2 Java GUI</p><p> 當(dāng)Java在1995年
37、的春天第一次發(fā)布的時(shí)候,它包含了一個(gè)叫AWT(Abstract Windowing Toolkit)的庫(kù),用來(lái)構(gòu)建圖形用戶界面應(yīng)用程序。Java很有雄心的宣言--"write once, run anywhere"許諾:一個(gè)具有下拉菜單,命令按鈕,滾動(dòng)條以及其他常見(jiàn)的GUI控件的應(yīng)用程序?qū)⒛軌蛟诟鞣N操作系統(tǒng)上運(yùn)行而不必重新編譯成針對(duì)某一平臺(tái)的二進(jìn)制代碼,包括Micro
38、soft Windows, Sun’s own Solaris, Apple’s Mac OS以及Linux。</p><p> 為了方便用Java構(gòu)建圖形用戶界面,Sun最初提供了一個(gè)在所有平臺(tái)下具有的獨(dú)特Java外觀的圖形界面庫(kù)。Sun在applet技術(shù)策略方面的首要伙伴Netscape提出applets應(yīng)該維持和運(yùn)行時(shí)平臺(tái)一樣的外觀。他
39、們希望applets在某一平臺(tái)下在顯示和行為上能夠像其他應(yīng)用程序一樣。</p><p> 為了實(shí)現(xiàn)Netscape的"本地外觀"的目標(biāo),在JDK的第一個(gè)發(fā)布版中包含了AWT這個(gè)庫(kù)。AWT的缺省實(shí)現(xiàn)使用了"對(duì)等"機(jī)制,即每一個(gè)Java GUI窗口部件都在底層的窗口系統(tǒng)中有一個(gè)對(duì)應(yīng)的組件。</p><p> 例如,每一個(gè)java.awt.B
40、utton對(duì)象將在底層窗口系統(tǒng)中創(chuàng)建一個(gè)唯一對(duì)應(yīng)的button。當(dāng)用戶點(diǎn)擊那個(gè)按鈕的時(shí)候,事件將從本地實(shí)現(xiàn)庫(kù)傳送到Java虛擬機(jī)里,并且最終傳送到與java.awt.Button對(duì)象相關(guān)聯(lián)的邏輯。對(duì)等系統(tǒng)的實(shí)現(xiàn)以及Java組件與對(duì)等組件之間的交流的實(shí)現(xiàn)都隱藏在底層JVM實(shí)現(xiàn)中,Java語(yǔ)言級(jí)的代碼仍然跨平臺(tái)。</p><p> 于1997年JavaOne大會(huì)上提出并在1998年5月發(fā)布的JFC(Java
41、0;Foundation Classes)包含了一個(gè)新的使用Java窗口開(kāi)發(fā)包。這個(gè)新的GUI組件叫做Swing,感覺(jué)到它是對(duì)AWT的升級(jí),并且看起來(lái)對(duì)Java占據(jù)計(jì)算機(jī)世界很有幫助。</p><p> 盡管"Swing"僅僅是這個(gè)新組件的指代名稱,它一直持續(xù)使用到今天??赡苁且?yàn)檫@個(gè)名稱太貼切了,Swing嘗試著以以下幾種方式改變公認(rèn)的觀點(diǎn):AWT依賴對(duì)等架構(gòu),用Java代碼包裝
42、本地窗口部件,Swing卻根本不使用本地代碼和本地窗口部件AWT把繪制屏幕交給本地窗口部件,Swing自己的組件繪制自己,因?yàn)镾wing不依賴本地窗口部件,它可以拋棄AWT的最小公分母的方法并在每個(gè)平臺(tái)下實(shí)現(xiàn)每個(gè)窗口部件,從而創(chuàng)建一個(gè)比AWT更強(qiáng)大的開(kāi)發(fā)工具包</p><p> 從最開(kāi)始Java就提供了構(gòu)建跨平臺(tái)的窗口GUI應(yīng)用程序庫(kù),從AWT,Swing到現(xiàn)在的SWT和JFace。最初的工具包能力微弱,但是后
43、來(lái)提供的工具包認(rèn)識(shí)到之前工具包的缺點(diǎn)并取得了巨大的進(jìn)步。SWT和JFace不僅使Java成為一個(gè)構(gòu)建桌面應(yīng)用程序的可行的選擇,也使之成為一個(gè)具有優(yōu)勢(shì)的開(kāi)發(fā)平臺(tái)。盡管過(guò)去對(duì)得到輕便和強(qiáng)大的Java系統(tǒng)的嘗試必然意味著接受它在GUI方面的缺點(diǎn),如今這個(gè)不足已經(jīng)不存在了,Java終于可以統(tǒng)領(lǐng)它在桌面計(jì)算應(yīng)用方面的位置了。</p><p> 2 .4.3 Java mail</p><p>
44、想將郵件工具結(jié)合到您獨(dú)立于平臺(tái)的 Java 解決方案中嗎?再?zèng)]有比 JavaMail API 更合適的了,它提供了個(gè)獨(dú)立于協(xié)議的模塊,能用于 IMAP、POP、SMTP、MIME 和其它涉及因特網(wǎng)的消息傳遞協(xié)議。現(xiàn)在,有了 JavaBeans Activation Framework (JAF)的支持,您的應(yīng)用程序經(jīng)由 JavaMail API 就能啟用郵件功能啦。</p><p> 第3章 系統(tǒng)總體設(shè)計(jì)<
45、;/p><p> 3 .1 系統(tǒng)功能模塊劃分</p><p> 模塊分析是描述系統(tǒng)需求的一個(gè)過(guò)程,需要將需求分析中的感性描述進(jìn)行抽象,提取出要實(shí)現(xiàn)的功能,這是整個(gè)系統(tǒng)開(kāi)發(fā)的一個(gè)關(guān)鍵過(guò)程。</p><p> 模塊分析的第一步,是描述Email客戶端的功能,以此確定系統(tǒng)的功能需求。本Email 客戶端對(duì)任何一個(gè)用戶都是普通用戶,無(wú)管理員設(shè)置,對(duì)每一個(gè)用戶都具有普通郵箱
46、所具有的收取、發(fā)送郵件的功能,因此根據(jù)用戶操作需求,將系統(tǒng)劃分為如下功能,并對(duì)其模塊的劃分和功能進(jìn)行描述.整個(gè)系統(tǒng)的模塊結(jié)構(gòu)如圖3.1所示,此圖將Email客戶端劃分為三大模塊,這些模塊又是由若干個(gè)子模塊構(gòu)成的,形成一個(gè)結(jié)構(gòu)緊湊功能明確完整,子模塊的劃分見(jiàn)3.2 系統(tǒng)具體功能模塊的基本介紹。</p><p><b> 圖3.1</b></p><p> 3 .2系
47、統(tǒng)具體功能模塊基本介紹</p><p> 本部分主要介紹Email客戶端的一些基本功能,主要描述了收件箱、發(fā)件箱、和通訊錄所具有的功能,詳細(xì)設(shè)計(jì)見(jiàn)第4章內(nèi)容。</p><p> 3 .2.1 發(fā)件箱</p><p> 發(fā)件箱可以通過(guò)用戶設(shè)置發(fā)送用戶所需要的郵件信息,本頁(yè)面可以實(shí)現(xiàn)查看已保存郵件信息、重發(fā)已發(fā)郵件、轉(zhuǎn)發(fā)所收郵件、郵件標(biāo)記、編輯郵件、新建郵件、刪除
48、郵件和打印郵件、發(fā)送,抄送、密送、發(fā)送附件、存儲(chǔ)郵件、未存儲(chǔ)提示等功能,具體功能圖如圖3.2.1</p><p><b> 圖3.2.1</b></p><p> 3 .2.2 收件箱</p><p> 收件箱可以通過(guò)用戶設(shè)置收取用戶所需要的郵件信息,本頁(yè)面可以實(shí)現(xiàn)查看所收取的郵件信息、轉(zhuǎn)發(fā)郵件、群發(fā)郵件、郵件標(biāo)記(標(biāo)記已讀和未讀)、編輯
49、和存儲(chǔ)郵件、刪除郵件和打印郵件等功能,具體功能圖如圖3.2.2</p><p><b> 圖3.2.2</b></p><p> 3 .2.3 通訊錄</p><p> 通訊錄可以存儲(chǔ)用戶的好友信息,可以方便用戶完成對(duì)郵件信息的發(fā)送,尤其是轉(zhuǎn)發(fā)和群組發(fā)送功能,通訊錄的存在在很大程度上方便了使用系統(tǒng)的用戶。本通訊錄可以實(shí)現(xiàn)查看好友、增加好友
50、、刪除好友、編輯好友信息、刪除好友信息等功能,本系統(tǒng)還可以建立多個(gè)通訊錄,每個(gè)通訊錄都可以對(duì)所存用戶進(jìn)行分組,以便方便郵件的發(fā)送,存儲(chǔ)通訊錄的文件還可以轉(zhuǎn)存,即修改當(dāng)前通訊錄的存放位置,其基本功能圖如圖3.2.3</p><p><b> 圖3.2.3</b></p><p> 第4章 系統(tǒng)詳細(xì)設(shè)計(jì)及系統(tǒng)實(shí)現(xiàn)</p><p> 4 .1
51、章節(jié)內(nèi)容總體介紹</p><p> 系統(tǒng)分析完成后,進(jìn)入系統(tǒng)的設(shè)計(jì)階段這是整個(gè)系統(tǒng)實(shí)現(xiàn)過(guò)程中非常重要的一個(gè)階段。本章節(jié)描述了系統(tǒng)設(shè)計(jì)的詳細(xì)過(guò)程和內(nèi)容及實(shí)現(xiàn)過(guò)程。</p><p> 4 .2各模塊功能詳細(xì)設(shè)計(jì)</p><p> 4 .2.1 發(fā)送郵件功能的實(shí)現(xiàn)</p><p> 4 .2.1.1 發(fā)送普通郵件功能</p>
52、<p> 實(shí)現(xiàn)此功能需要引入java mail 工具包中的以下包</p><p> import javax.mail.*;</p><p> import javax.mail.internet.*;</p><p> 構(gòu)造sendMail類的主要代碼如下</p><p> public class sendMail {
53、</p><p> private String SMTP,mailFrom,mailTo,mailCC,mailTitle,mailBody,mailEncode;</p><p> private String userName,userPass;</p><p> private Object[] attachFileList;</p>&
54、lt;p> private boolean isAuthentic = false;</p><p> public sendMail(){</p><p> //初始化參數(shù)代碼段</p><p> this.SMTP = "";</p><p> this.mailFrom ="";&
55、lt;/p><p> this.mailTo = "";</p><p> this.mailCC = "";</p><p> this.mailTitle = "";</p><p> this.mailBody = "";</p><
56、p> this.mailEncode = "BIG5";</p><p><b> }</b></p><p> //為用戶提供參數(shù)設(shè)置接口</p><p> //在本系統(tǒng)中通過(guò)以下方法實(shí)現(xiàn)對(duì)用戶寫(xiě)入的信息加以傳遞</p><p> public void setFrom(String
57、 from){this.mailFrom = from;}</p><p> public void setTo(String to){this.mailTo = to;}</p><p> public void setCC(String cc){this.mailCC = cc;}</p><p> public void setBody(String b
58、ody){this.mailBody = body;}</p><p> public void setTitle(String title){this.mailTitle = title;}</p><p> public void setSMTP(String smtp){this.SMTP = smtp;}</p><p> public void se
59、tUserName(String userName){this.userName = userName;}</p><p> public void setPassword(String pass){this.userPass = pass;}</p><p> public void setAttachFile(Object[] fileListAry){</p>&l
60、t;p> this.attachFileList = fileListAry;</p><p><b> }</b></p><p> //設(shè)置文字編碼代碼如下</p><p> public void setEncode(String encode){this.mailEncode = encode;</p>&l
61、t;p> public int send(boolean hasSMTPAuth){</p><p> this.isAuthentic = hasSMTPAuth;//檢查參數(shù)是否安全</p><p> if(!checkParameters(isAuthentic)){</p><p><b> return 1;</b>&l
62、t;/p><p><b> }else{</b></p><p> Properties prop = new Properties();//設(shè)定SMTP Server</p><p> prop.put("mail.smtp.host",this.SMTP);</p><p> Session
63、mailConn = Session.getDefaultInstance(prop,null);</p><p> Message msg = new MimeMessage(mailConn);</p><p> try{ </p><p> msg.setHeader("Content-Transfer-En
64、coding",this.mailEncode);</p><p> reEncode();</p><p> //設(shè)置郵件的地址和郵件的編碼</p><p> msg.setFrom(new InternetAddress(this.mailFrom));</p><p> //Set reciever e-mail ad
65、dress and nickname</p><p> msg.setRecipient(Message.RecipientType.TO, </p><p> new InternetAddress(this.mailTo)); </p><p> if(this.mailCC.trim().length()!=0){</p><p&g
66、t; msg.setRecipient(Message.RecipientType.CC,</p><p> new InternetAddress(this.mailCC));</p><p><b> }</b></p><p><b> //設(shè)定信件標(biāo)題</b></p><p> i
67、f(this.mailTitle.trim().length()==0){ </p><p> msg.setSubject("[無(wú)標(biāo)題信件]");</p><p><b> }else{</b></p><p> msg.setSubject(this.mailTitle);</p><p>
68、<b> }</b></p><p> Multipart mp = new MimeMultipart();</p><p> MimeBodyPart mbpBody = new MimeBodyPart();</p><p> mbpBody.setContent(this.mailBody+ this.mailEncode);&
69、lt;/p><p> MimeBodyPart mbpFile;</p><p> for(int i=0;i<attachFileList.length;i++){</p><p> String fullPath = this.toBIG5(attachFileList[i].toString());</p><p> mbpF
70、ile = new MimeBodyPart();</p><p> FileDataSource fds = new FileDataSource(fullPath);</p><p> mbpFile.setDataHandler(new DataHandler(fds));</p><p> mbpFile.setFileName(fds.getName
71、());</p><p> mp.addBodyPart(mbpFile);</p><p><b> }</b></p><p> mp.addBodyPart(mbpBody); //將內(nèi)容加入</p><p> msg.setContent(mp);</p><p> if(isA
72、uthentic){ //送信</p><p> prop.put("mail.smtp.auth",isAuthentic);</p><p> Transport trans = mailConn.getTransport("smtp");</p><p><b> try{</b></p
73、><p> trans.connect(this.SMTP,this.userName,this.userPass);</p><p> trans.sendMessage(msg,msg.getAllRecipients());</p><p><b> return 0;</b></p><p> }catch(
74、Exception ex){</p><p> ex.printStackTrace();</p><p><b> return 2;</b></p><p><b> }finally{</b></p><p> trans.close();</p><p>&l
75、t;b> }</b></p><p><b> }else{</b></p><p><b> try{</b></p><p> Transport.send(msg);</p><p><b> return 0;</b></p>
76、<p> }catch(SendFailedException ex){</p><p> System.out.println(ex.toString());</p><p><b> return 3;</b></p><p><b> }</b></p><p><b&
77、gt; }</b></p><p> }catch(Exception ex){</p><p> ex.printStackTrace();</p><p><b> return 4;</b></p><p><b> }</b></p><p>&
78、lt;b> }</b></p><p><b> }</b></p><p> private boolean checkParameters(boolean hasSMTPAuth){</p><p> if(SMTP.trim().length()==0 || mailFrom.trim().length()==0
79、 </p><p> || mailTo.trim().length()==0)</p><p> return false;</p><p><b> else</b></p><p> if(hasSMTPAuth){</p><p> if(this.userName.trim()
80、.length()==0)</p><p> return false;</p><p><b> else</b></p><p> return true;</p><p><b> }else{</b></p><p> return true;</p&
81、gt;<p><b> }</b></p><p><b> }</b></p><p> private void reEncode(){</p><p> if(this.mailEncode.toUpperCase()=="BIG5"){</p><p&g
82、t; this.mailFrom = toBIG5(mailFrom);</p><p> this.mailTo = toBIG5(mailTo);</p><p> this.mailTitle = toBIG5(mailTitle);</p><p> this.mailBody = toBIG5(mailBody);</p><p
83、> }else if(this.mailEncode.toUpperCase()=="UTF8"){</p><p> this.mailFrom = toUTF8(mailFrom);</p><p> this.mailTo = toUTF8(mailTo);</p><p> this.mailTitle = toUTF8(m
84、ailTitle);</p><p> this.mailBody = toUTF8(mailBody);</p><p><b> }</b></p><p><b> }</b></p><p> private String toUTF8(String str){</p>
85、<p><b> try {</b></p><p> str = MimeUtility.encodeText(str,"UTF-8", "B");</p><p> return str;</p><p> } catch (Exception ex){</p>&l
86、t;p> return str;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 圖4.2.1.1 新建郵件</p><p> 要發(fā)送郵件之需要使用已經(jīng)
87、建好的sendMail類即可,功能代碼如下:</p><p> sendMail mail=new sendmail();</p><p> mail.setMailTo(****);</p><p> mail.setMailFrom(****);</p><p> mailsend();</p><p>
88、 4 .2.1.2 郵件附件的功能實(shí)現(xiàn)</p><p> 此功能實(shí)現(xiàn)代碼如下:</p><p> public class AttachExample {</p><p> public static void main (String args[]) </p><p> throws Exception {</p>&
89、lt;p> String host = args[0];</p><p> String from = args[1];</p><p> String to = args[2];</p><p> String fileAttachment = args[3];</p><p><b> // 獲得系統(tǒng)參數(shù)<
90、/b></p><p> Properties props = System.getProperties();</p><p> //設(shè)置郵件的服務(wù)器</p><p> props.put("mail.smtp.host", host); </p><p> // 獲得Session</p>&
91、lt;p> Session session = Session.getInstance(props, null);</p><p> MimeMessage message = new MimeMessage(session); // Define message</p><p> message.setFrom(new InternetAddress(from));</
92、p><p> message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));</p><p> message.setSubject("Hello JavaMail Attachment");</p><p> MimeBodyPart messageBodyPar
93、t =new MimeBodyPart();// create the message part</p><p> messageBodyPart.setText("Hi");//fill message</p><p> Multipart multipart = new MimeMultipart(); multipart.addBodyPart(me
94、ssageBodyPart);</p><p> // Part two is attachment messageBodyPart = new MimeBodyPart();</p><p> DataSource source = new FileDataSource(fileAttachment);</p><p> messageBodyP
95、art.setDataHandler(new DataHandler(source));</p><p> messageBodyPart.setFileName(fileAttachment);</p><p> multipart.addBodyPart(messageBodyPart);</p><p> // 將多個(gè)附件加入信件中</p>
96、<p> message.setContent(multipart);</p><p> // 發(fā)送帶附件的郵件,此功能代碼結(jié)束</p><p> Transport.send( message );</p><p><b> }</b></p><p> 4 .2.2 收取郵件功能的實(shí)現(xiàn)</
97、p><p> 郵件的收取可以使用java Mail API的方法,主要的操作過(guò)程為:獲取javax.mail.Session實(shí)例,并進(jìn)而獲得javax.mail.Store實(shí)例。利用javax.mail.Store實(shí)例獲得缺省收件箱(INBOX)javax.mail.Folder實(shí)例。使用javax.mail.Folder對(duì)象提取新郵件,存儲(chǔ)為javax.mail.Message對(duì)象數(shù)組。創(chuàng)建javax.mail.
98、FetchProfile以(潛在地)優(yōu)化對(duì)特定郵件組成成分的提取。這里的javax.mail.FetchProfile類提供郵件協(xié)議提供者可選參數(shù),其目的是更有效地實(shí)現(xiàn)郵件組成成分的預(yù)提取</p><p> 此功能的主要代碼如下:</p><p> String pers = null;</p><p> String addr = null;</p&g
99、t;<p> if(a instanceof InternetAddress &&((pers=((InternetAddress)a).getPersonal())!=null))</p><p> addr=pers+" "+"<"+((InternetAddress)a).getAddress()+">"
100、;;</p><p><b> else</b></p><p> addr = a.toString();</p><p> return addr;</p><p> Session mailsession=Session.getInstance(System.getProperties(),null);&l
101、t;/p><p> mailsession.setDebug(false);</p><p> Store store=mailsession.getStore(protocol);//protocol為連接協(xié)議,IMAP或是POP</p><p> store.connect(mailhost,-1,user,passwd);//mailhost主機(jī),user為
102、用戶名,passwd為密碼</p><p> Folder folder = store.getFolder("INBOX");</p><p><b> try </b></p><p><b> { </b></p><p> folder.open(Folder.R
103、EAD_WRITE);</p><p> } catch (MessagingException ex) </p><p><b> {</b></p><p> folder.open(Folder.READ_ONLY);</p><p><b> }</b></p><
104、;p> Message message[]=folder.getMessages();</p><p> FetchProfile fp=new FetchProfile();</p><p> fp.add(FetchProfile.Item.ENVELOPE);</p><p> fp.add(FetchProfile.Item.FLAGS);&l
105、t;/p><p> fp.add("X-Mailer");</p><p> folder.fetch(message,fp);</p><p> int id=0,j=0;</p><p> for(int i=0;i<request.getParameter("id").length();
106、i++)//假設(shè)要閱讀第ID個(gè)郵件。</p><p> id=id*10+(request.getParameter("id").charAt(i)-48);</p><p> for(j=0;j<id;j++);</p><p> message[j].setFlag(Flags.Flag.SEEN,true);</p>
107、<p> out.println(“主題:”+message[j].getSubject());</p><p> String from=new String();Address[] fr=message[j].getFrom();if(fr!=null){ boolean tf=true;</p><p> for(int i=0;i<fr.lengt
108、h;i++)</p><p> from=from+getDisplayAddress(fr);</p><p><b> }</b></p><p> out.println(“from”+from+);</p><p> Object o=message[j].getContent();</p>
109、<p> if (message[j].isMimeType("text/plain")) //就可直接讀出了。</p><p> out.println((String)o+" ");</p><p> else if(message[j].isMimeType("multipart/*"))</p>
110、;<p> { Multipart mp=(Multipart)o;Part part=mp.getBodyPart(0);String msg=(String)part.getContent();StringBuffer buf=new StringBuffer(msg.length()+6);char ch=' ';for(int i=0;i<msg.length();i++)//若遇
111、到換行就轉(zhuǎn)為<br></p><p> { ch=msg.charAt(i);if(ch=='\n')buf.append("<br>");else buf.append(ch);}out.println(buf.toString());</p><p><b> }</b></p>
112、<p><b> else</b></p><p> out.println("現(xiàn)在還無(wú)法顯示:"+message[j].getContentType());</p><p> folder.close(true);</p><p> store.close();</p><p>
113、 String pers = null;</p><p> String addr = null;</p><p> if(a instanceof InternetAddress &&((pers=((InternetAddress)a).getPersonal())!=null))</p><p> addr=pers+" &q
114、uot;+"<"+((InternetAddress)a).getAddress()+">";</p><p><b> else</b></p><p> addr = a.toString();</p><p> return addr;</p><p>
115、Session mailsession=Session.getInstance(System.getProperties(),null);</p><p> mailsession.setDebug(false);</p><p> Store store=mailsession.getStore(protocol);//protocol為連接協(xié)議,IMAP或是POP</p>
116、;<p> store.connect(mailhost,-1,user,passwd);//mailhost主機(jī),user為用戶名,passwd為密碼</p><p> Folder folder = store.getFolder("INBOX");</p><p><b> try </b></p><
117、p><b> { </b></p><p> folder.open(Folder.READ_WRITE);</p><p> } catch (MessagingException ex) </p><p><b> {</b></p><p> folder.open(Folde
118、r.READ_ONLY);</p><p><b> }</b></p><p> Message message[]=folder.getMessages();</p><p> FetchProfile fp=new FetchProfile();</p><p> fp.add(FetchProfile.I
119、tem.ENVELOPE);</p><p> fp.add(FetchProfile.Item.FLAGS);</p><p> fp.add("X-Mailer");</p><p> folder.fetch(message,fp);</p><p> int id=0,j=0;</p><
120、;p> for(int i=0;i<request.getParameter("id").length();i++)//假設(shè)要閱讀第ID個(gè)郵件。</p><p> id=id*10+(request.getParameter("id").charAt(i)-48);</p><p> for(j=0;j<id;j++);<
121、;/p><p> message[j].setFlag(Flags.Flag.SEEN,true);</p><p> out.println(“主題:”+message[j].getSubject());</p><p> String from=new String();Address[] fr=message[j].getFrom();if(fr!=nu
122、ll){ boolean tf=true;</p><p> for(int i=0;i<fr.length;i++)</p><p> from=from+getDisplayAddress(fr);</p><p><b> }</b></p><p> out.println(“from”+fro
123、m+);</p><p> Object o=message[j].getContent();</p><p> if (message[j].isMimeType("text/plain")) //就可直接讀出了。</p><p> out.println((String)o+" ");</p><
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java實(shí)現(xiàn)的e-mail客戶端的分析與實(shí)現(xiàn)
- JAVA實(shí)現(xiàn)的E-mail客戶端的分析與實(shí)現(xiàn).doc
- 基于java的uaw聊天室系統(tǒng) ——客戶端通訊-畢業(yè)論文
- email客戶端畢業(yè)設(shè)計(jì)
- 軟件工程畢業(yè)論文-基于java的聊天室的設(shè)計(jì)與實(shí)現(xiàn)—客戶端
- 基于java的hbase客戶端編程
- 基于java的聊天室—客戶端
- email客戶端軟件的應(yīng)用
- java多種方式獲取客戶端mac地址
- 畢業(yè)論文——基于jsp的java email郵件系統(tǒng)研發(fā)
- 利用java實(shí)現(xiàn)圖書(shū)管理系統(tǒng)畢業(yè)論文
- 基于jsp的java_email郵件系統(tǒng)研發(fā)畢業(yè)論文
- 畢業(yè)論文——java
- java畢業(yè)論文
- 電子郵件客戶端畢業(yè)論文
- 掌廚手機(jī)客戶端設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 畢業(yè)設(shè)計(jì)---e-mail客戶端管理程序的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文--電子郵件客戶端軟件
- 基于云協(xié)作平臺(tái)的客戶端設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- java畢業(yè)論文--旅游信息系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論