基于JavaMail的電子郵件收發(fā)系統(tǒng)畢業(yè)設(shè)計.doc_第1頁
基于JavaMail的電子郵件收發(fā)系統(tǒng)畢業(yè)設(shè)計.doc_第2頁
基于JavaMail的電子郵件收發(fā)系統(tǒng)畢業(yè)設(shè)計.doc_第3頁
基于JavaMail的電子郵件收發(fā)系統(tǒng)畢業(yè)設(shè)計.doc_第4頁
基于JavaMail的電子郵件收發(fā)系統(tǒng)畢業(yè)設(shè)計.doc_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

目 錄第1章 概述11.1研究目的和意義11.2國內(nèi)外發(fā)展趨勢和現(xiàn)狀21.3 系統(tǒng)特點4第2章 相關(guān)技術(shù)和工具簡介62.1 Swing簡介62.2 Java Mail簡介62.3 Java平臺簡介72.4 Eclipse簡介7第3章 系統(tǒng)需求分析和總體設(shè)計93.1用戶對電子郵件系統(tǒng)的需求93.2產(chǎn)品可行性分析103.3系統(tǒng)總體設(shè)計12 3.3.1電子郵件系統(tǒng)的功能12 3.3.2電子郵件收發(fā)過程13 3.3.3服務(wù)器參數(shù)的設(shè)置14 第4章 詳細(xì)設(shè)計 .154.1 登錄功能的設(shè)計154.2發(fā)送郵件的設(shè)計154.3接收郵件的設(shè)計164.4郵件管理的設(shè)計17 第5章 系統(tǒng)功能的編碼實現(xiàn)185.1用戶登錄界面的實現(xiàn)185.2主界面的實現(xiàn)195.3 郵件配置界面的實現(xiàn)205.4 發(fā)送郵件界面的實現(xiàn)215.5 接收郵件界面的實現(xiàn)22第6章 系統(tǒng)實現(xiàn)的功能測試246.1 登錄測試246.2發(fā)送測試246.3接收郵件測試266.4查看郵件測試266.5刪除郵件測試27第7章 總結(jié)29參考文獻(xiàn)30致 謝31附錄:部分源程序代碼32附件1:開題報告附件2: 譯文及原文影印件41 / 44第1章 概述 隨著信息時代的到來,Internet的廣泛應(yīng)用,相信大家對qq郵箱,163郵箱,yahoo郵箱已經(jīng)并不陌生,這一類郵箱的出現(xiàn)是計算機(jī)和網(wǎng)絡(luò)不斷發(fā)展的結(jié)果,與每個人都密不可分,已經(jīng)成為網(wǎng)絡(luò)中最廣泛使用的一部分。1.1研究目的和意義從人類發(fā)展開始,信息交換一直都是人類的基本需求之一。人們會通過各種途徑來實現(xiàn)信息的交換,從而達(dá)到一種交流。從以前的快馬送信和口耳相傳到如今的電話電腦和郵政系統(tǒng),隨著先進(jìn)技術(shù)的不斷進(jìn)步,人類信息交流的方式也一直在進(jìn)步,其中電子郵件服務(wù)就是計算機(jī)和網(wǎng)絡(luò)技術(shù)出現(xiàn)之后的一個例子。它較以前更加方便快捷,深受人們的喜愛。電子郵件又被稱為電子郵箱,是一種典型的通過先進(jìn)技術(shù)的電子手段提供信息交換的一種通信方式,同時也是Internet的所有應(yīng)用中最廣泛的服務(wù)。電子郵件不是只局限于信件的傳遞了,而是另外還包括文件,聲音及圖形圖像等信息的傳遞。這種非交互式的通信方式,加速了數(shù)據(jù)傳送從而更快的達(dá)到信息的交流,促進(jìn)了社會的發(fā)展。她是一種簡單且快速的方法,電子郵件系統(tǒng)通過連上全世界的網(wǎng)絡(luò),用戶就可以免費地并且非常快的(幾秒鐘之內(nèi))可以將信息發(fā)送到世界上任何你指定的目的地。同時,用戶也可以從電子郵件系統(tǒng)中得到大量免費的新聞、專題郵件,并實現(xiàn)輕松的信息搜索。這是任何傳統(tǒng)的方式也無法相比的。 電子郵件最顯著地特點是“存貯轉(zhuǎn)發(fā)式”服務(wù),并不是一種“終端到終端的服務(wù),利用這種存貯轉(zhuǎn)發(fā)可以進(jìn)行異步通信,即信件發(fā)送人可以在任何時間任何地點發(fā)送文件,這并不要求接收者必須同時在場,即使是對方不在,發(fā)送者的郵件還是可以立刻送到對方的信箱內(nèi),并進(jìn)行了存儲,這樣接收者可以在他方便時登錄郵箱來收取郵件,來查看郵件內(nèi)容,這不必受到時間空間的限制。這種存貯轉(zhuǎn)發(fā)服務(wù)也正是電子郵箱系統(tǒng)的核心。 隨著上網(wǎng)用戶越來越多,上網(wǎng)速度越來越快,作為網(wǎng)絡(luò)基礎(chǔ)應(yīng)用的電子郵件系統(tǒng)所面臨的問題也日益突出,不管是使用免費的郵箱,還是163.com等,還是使用收費的個人郵箱,ISP提供的虛擬機(jī)郵箱都存在著種種問題。介于當(dāng)下流行的各大郵件客戶端軟件的除了最主要的收發(fā)信件之外,功能越來越復(fù)雜,但是我們的日常生活中真正用到的功能卻很少,同時作為中小型企業(yè),郵箱的成本也越來越高,很多功能尤其對于計算機(jī)知識相對缺乏的人來說,顯得太過華麗且不太實用。有鑒于此,在了解smtp和pop3等底層協(xié)議的基礎(chǔ)之上,開發(fā)了這個各種功能相對簡單實用的郵件系統(tǒng),簡化了用戶的操作。1.2國內(nèi)外發(fā)展趨勢和現(xiàn)狀 電子郵件是互聯(lián)網(wǎng)最基本且最重要的服務(wù)之一。據(jù)統(tǒng)計,目前全世界的電子郵件賬號超過15億個,電子郵件成為Internet上所占比例最大的應(yīng)用。中國互聯(lián)網(wǎng)絡(luò)信息中心關(guān)于中國互聯(lián)網(wǎng)發(fā)展?fàn)顩r統(tǒng)計報告(2005年1月)表明,我國目前上網(wǎng)人數(shù)9400萬,人均擁有電子郵箱1.5個。還有另一項數(shù)據(jù)表明,互聯(lián)網(wǎng)上百分之三十的業(yè)務(wù)量都是電子郵件,由于我國通信設(shè)施較差,以及網(wǎng)絡(luò)速度慢等弊端,快捷的電子郵件服務(wù)更具實用性。CINNIC中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計報告中指出,中國用戶最常使用的網(wǎng)絡(luò)服務(wù)71.65%是電子郵件,而搜索引擎和上傳或下載服務(wù)分別只占50.40%和44.16%。早期的電子郵件系統(tǒng)在網(wǎng)絡(luò)形成的時候就已經(jīng)出現(xiàn)了,1961年的時候,麻省理工學(xué)院在7094大型機(jī)系統(tǒng)上開發(fā)出了一套兼容時分共享系統(tǒng)(CTSS)。這也允許許多用戶使用主機(jī)的新能力,使用戶可以用新的方法來共享信息。當(dāng)CTSS系統(tǒng)的用戶需要向其他用戶傳遞信息時,他們會在一個通用的目錄下以“TO TOM”之類的文件名簡歷一個文件,查看或者打印其中的內(nèi)容,在這種簡單的信息發(fā)送方法的基礎(chǔ)上,出現(xiàn)了第一個“郵件”工具,通過這個工具,CTSS系統(tǒng)的管理員可以向用戶發(fā)送信息。例如某個用戶他丟失的文件已經(jīng)通過備份找回,這是通過在目錄用戶中創(chuàng)建特定的文件來實現(xiàn)的。 這以后,CTSS系統(tǒng)上也出現(xiàn)了用于用戶之間信息傳遞的郵件工具。在其他的多用戶系統(tǒng)上,也陸續(xù)開發(fā)和使用了類似的郵件軟件。這些軟件的工作原理類似,都是在用戶目錄下設(shè)置一個特殊的目錄,一個用戶給另一個用戶發(fā)信時,就在收信者的牡蠣下建立一個新的文件,并在其中保存新建的內(nèi)容。 當(dāng)收信者稍后登陸的主機(jī)上時,檢查該目錄就可以知道自己有新的郵件,并可以打開和查看郵件內(nèi)容,這些早期的郵件系統(tǒng)雖然非常簡陋,也存在很多問題,但是其基本思想都是通過文件的傳遞來實現(xiàn)用戶之間的異步傳輸,和今天所用的電子郵件系統(tǒng)基本相同?,F(xiàn)代電子郵件系統(tǒng)正式在這些原始的郵件軟件基礎(chǔ)上發(fā)展而來的。 到了20世紀(jì)60年代末70年代初,在美國國防部領(lǐng)導(dǎo)下,現(xiàn)代INTERNET 的前身ARPANET 開始建立和運行,它將成員單位的多臺主機(jī)連接起來組成了一個網(wǎng)絡(luò)。當(dāng)時,網(wǎng)絡(luò)內(nèi)的大部分主機(jī)上都已經(jīng)有了內(nèi)部的郵件系統(tǒng),于是一個很自然的想法出現(xiàn)了,就是能否利用ARPANET使這些郵件系統(tǒng)能夠相互通信。事實上,郵件系統(tǒng)的互聯(lián)正式ARPANETA最早期的網(wǎng)絡(luò)應(yīng)用嘗試之一。 1969年,在ARPANET原型網(wǎng)還在試驗的時候,拉里羅伯特編寫了第一個通過網(wǎng)絡(luò)發(fā)送電子郵件的程序。 1971年1月,ARPA RFC 196郵箱協(xié)議(Mail Box Protocol)中討論了如何通過ARPANET 發(fā)送郵件的問題。之后有多個類似的RFC文件進(jìn)行了這個方面的探討。 由于當(dāng)時FTP協(xié)議已經(jīng)比較成熟,而郵件發(fā)送一直沒有成熟的協(xié)議,所以一些人開始研究利用FTP協(xié)議來發(fā)送郵件的方法。1972年8月,在RCF385關(guān)于FTP協(xié)議的注釋中第一次提出通過擴(kuò)展FTP協(xié)議的方法來發(fā)送電子郵件。之后的一些RFC文件進(jìn)一步對該方案進(jìn)行了改進(jìn)。在1973年一次會議上,大家統(tǒng)一在FTP命令中使用“用戶名主機(jī)名”形式的地址來標(biāo)明郵件地址,這被寫入了RFC469文件。RFC498則提出了不用FTP協(xié)議進(jìn)行郵件傳輸?shù)姆椒?。這些方案由于各種原因都未能得到推廣使用,ARPANET上的郵件系統(tǒng)一直處于各自為政的狀態(tài)。 除了郵件收發(fā)的問題外,郵件格式也是電子郵件協(xié)議中的一個重要內(nèi)容。1977年,洛克等人提出來一個統(tǒng)一的郵件格式標(biāo)準(zhǔn),也就是后來的RFC733.但是這次統(tǒng)一郵件格式標(biāo)準(zhǔn)的嘗試并未能獲得成功。這便是早起ARPNET上的電子郵件系統(tǒng)。 早起的各種基于網(wǎng)絡(luò)的電子郵件傳輸協(xié)議都存在這樣那樣的問題。要么功能不完善,要么過于復(fù)雜。人們需要的是一個全新的,易于實現(xiàn)而有功能強(qiáng)大的電子郵件傳輸協(xié)議。1980年,RFC772郵件傳輸協(xié)議發(fā)布了,其中描述了一個全新的郵件傳輸協(xié)議。但是這個協(xié)議還是過于復(fù)雜了,于是人們在它的基礎(chǔ)上又進(jìn)行了改進(jìn),縱欲在1981年的RFC780中發(fā)布了簡單郵件傳輸協(xié)議,經(jīng)過一些曉得改進(jìn)后,最總形成了RFC821SMTP協(xié)議,這也正是今天的電子郵件系統(tǒng)的標(biāo)準(zhǔn)傳輸協(xié)議。 統(tǒng)一的郵件傳輸協(xié)議自然需要統(tǒng)一的郵件格式,1982年,克魯克在RFC733的基礎(chǔ)上編寫RFC822APRAInternet文本信息格式標(biāo)準(zhǔn),他也最終成為電子郵件的標(biāo)準(zhǔn)格式。但是在RFC822格式中,郵件都是文本格式的,沒有考慮非文本的郵件內(nèi)容問題。很快人們就對電子郵件提出更多的要求,希望能用它來發(fā)送非文本格式的附件,如圖片,多媒體文件等。于是在1996年又發(fā)布了RFC20452049,規(guī)定了MIME編碼格式。通過這種格式,可以實現(xiàn)各種文件和文本信息之間的無損轉(zhuǎn)換,這樣就可以將他們封裝在標(biāo)準(zhǔn)RFC822格式的文本郵件中直接發(fā)送,從而使電子郵件系統(tǒng)也可以發(fā)送非文本的信息了。 后來,人們根據(jù)郵件系統(tǒng)中使用的問題,又陸續(xù)對SMTP協(xié)議以及其父樹協(xié)議進(jìn)行了一些小的修改,如增加用戶身份認(rèn)證功能等。到目前為止,SMTP協(xié)議的最新版本是RFC2821,郵件格式規(guī)范的最新版本是RFC2822。這便是現(xiàn)代電子郵件系統(tǒng)的出現(xiàn)。 從以上分析中可以得出這樣的結(jié)論,由于在電子郵件系統(tǒng)存在的種種缺陷,我們要學(xué)會重新設(shè)計出一種全新的,每個地方都考慮到并徹底解決各種安全問題和隱患的電子郵件系統(tǒng),用它來代替現(xiàn)有的電子郵件系統(tǒng)給人們提供更高一層的服務(wù)。但遺憾的是,由于各種現(xiàn)實的問題,(如環(huán)境,技術(shù),資金等)使其在可預(yù)見的未來,仍然是一個不可能實現(xiàn)的任務(wù),但是無論如何,一個已經(jīng)成功的或者試圖成功的電子郵件系統(tǒng),必須要能夠較好的解決這些問題2。1.3 系統(tǒng)特點 郵件服務(wù)器提供的服務(wù)類型,可以分為發(fā)送郵件服務(wù)器(簡稱發(fā)送服務(wù)器)和接收郵件服務(wù)器(簡稱接收郵件服務(wù)器)。發(fā)送郵件服務(wù)器使用郵件發(fā)送協(xié)議,現(xiàn)在常用的是SMTP,所以通常發(fā)送郵件服務(wù)器也稱為SMTP服務(wù)器;接收郵件服務(wù)器使用接收郵件協(xié)議,常用的是POP3協(xié)議,所以通常接收郵件服務(wù)器也稱為POP3服務(wù)器。 SMTP(Simple Mail Transfer Protocol),即簡單的郵件傳送協(xié)議,是互聯(lián)網(wǎng)傳送電子郵件的基本協(xié)議,是TCP/IP協(xié)議組的成員,它可以解決郵件系統(tǒng)如何通過一條鏈路,把郵件從一臺機(jī)器上傳送到另一臺機(jī)器上的問題,它的特點是具有很好的可伸縮性和簡單性,因此它在廣域網(wǎng)和局域網(wǎng)都能適用,并且在Internet上能夠發(fā)送郵件的服務(wù)器幾乎都支持SMTP協(xié)議,這也正是它成功的關(guān)鍵。服務(wù)器接收客戶端發(fā)過來的SMTP協(xié)議格式的命令,這些命令有HELO ,MAIL FROM,RCPT TO,DATA,QUIT,服務(wù)器接到這些命令后,給出對應(yīng)的響應(yīng)碼,然后發(fā)給客戶端。 POP3(Post Office Protocol 3)是郵局協(xié)議的第3個版本,它規(guī)定郵件客戶端怎么從服務(wù)器那里接收郵件,是第一個電子郵件的離線協(xié)議標(biāo)準(zhǔn)。它既允許接收服務(wù)器向郵件用戶發(fā)送郵件,也可以接收來自SMTP服務(wù)器的郵件,郵件客戶端軟件會與POP3服務(wù)器之間進(jìn)行交互,下載由POP3服務(wù)器接收到的郵件,POP3協(xié)議支持用戶從服務(wù)器上接收郵件然后存儲到自己的計算機(jī)上,同時根據(jù)客戶端的操作刪除或保存在郵件服務(wù)器上的郵件,服務(wù)器接收客戶端發(fā)過來的POP3協(xié)議格式的命令,這些命令有USER,PASS,LIST,RETR,DELE,REST,QUIT,服務(wù)器接到這些命令后,給出對應(yīng)的響應(yīng)信息+OK或者-ERR,然后連同郵件信息發(fā)給客戶端?;赑OP3協(xié)議的郵件系統(tǒng)能提供快捷,實惠的服務(wù),因此深受廣大用戶的青睞。POP3協(xié)議也是TCP/IP協(xié)議族中的一員,由RFC 1939 定義。第2章 相關(guān)技術(shù)和工具簡介2.1 .Swing簡介 Swing是一個專門用于開發(fā)Java用戶界面程序的工具包。它是在抽象窗口工具包(AWT)的基礎(chǔ)上讓跨平臺JAVA程序能夠使用所有可插拔的界面風(fēng)格,Swing程序員只需要用簡單的代碼就能夠利用Swing模塊化的,豐富的功能和靈活的組件來編出漂亮的系統(tǒng)界面。工具包中的包都以swing來命名的,例如javax.swing.event。 Swing開發(fā)包全部是用Java來實現(xiàn)的,Swing本身不依賴于操作系統(tǒng),也沒有除JAVA之外的其它代碼,是一個輕量級的組件,這就是他和AWT的卻別。因為AWT是通過與具體操作系統(tǒng)相關(guān)的對等類來實現(xiàn)的,所以Swing要比AWT具有更加強(qiáng)的實用性。Swing在所有平臺上的表現(xiàn)都是一致的,并且能表現(xiàn)出除當(dāng)前系統(tǒng)之外的其它界面風(fēng)格。Swing效仿了MVC的設(shè)計模式,即模型-視圖-控制,其中模型是專門用來存放內(nèi)容的,視圖是專門用來查看內(nèi)容的,控制器是用來負(fù)責(zé)用戶輸入的。在AWT中,由于控制界面外觀的對等類和具體的平臺息息相關(guān),因而AWT組件的外觀只和本機(jī)的外觀相關(guān),但是Swing能使程序在一個操作系統(tǒng)上運行的時候有不同的外觀以供用戶可以選擇自己習(xí)慣的外觀。2.2 Java Mail簡介Java Mail是由Sun提供的API,但是它沒有被放在JAVA標(biāo)準(zhǔn)的基本開發(fā)包中,表明你在開發(fā)JAVA MAIL系統(tǒng)時需要另外下載JAVAMAIL包。另外,你還得下載Sun公司的JAF包,JAF非常復(fù)雜,JAVAMAIL的運行需要JAF的支持。Java Mail包是可選的,因此如果需要使用的話你需要首先從下載。目前最新版本是JavaMail1.4,使用JavaMail的時候需要下載JAF,安裝Java Mail只是需要把他們加入到CLASSPATH中去,如果你不想修改CLASSPATH的話,可以直接把他們的jar包copy到JAVA_HOME/lib/ext下,這樣Java Mail就安裝好了5。Java Mail包中用于處理電子郵件的核心類是:Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定義了一個基本的郵件會話,它需要從Properties中讀取類似于郵件服務(wù)器,用戶名和密碼等信息。另外很好的實現(xiàn)了Java Mail API的框架有James、Spring Mail。2.3 Java平臺簡介Java平臺由Java虛擬機(jī)和Java核心類所構(gòu)成,它為純Java程序提供了統(tǒng)一的編程接口,而不管下層操作系統(tǒng)是什么,Java平臺更分細(xì)一點的話主要是由一個compiler(編譯器),一個運行環(huán)境(runtime environment),和一個核心的API組成。Java應(yīng)用編程接口為Java應(yīng)用提供了一個獨立于操作系統(tǒng)的標(biāo)準(zhǔn)接口,可分為基本部分和擴(kuò)展部分,在安裝了Java運行平臺后,Java程序就能夠被運行了。Java API為分為基本部分與擴(kuò)展部分,Java應(yīng)用提供了一個獨立于操作系統(tǒng)的標(biāo)準(zhǔn)接口。因此Java程序只需要編譯一次,就可以在所有系統(tǒng)中運行。Java應(yīng)用編程接口已經(jīng)從1.1x版發(fā)展到1.2版。目前常用的JDK版本是1.6,最新版本為1.7。與傳統(tǒng)程序不同,Sun 公司在推出 Java 之際就將其作為一種開放的技術(shù),全球數(shù)以萬計的 Java 開發(fā)公司被要求所設(shè)計的 Java 軟件必須相互兼容,“Java 語言靠群體的力量而非公司的力量”為Sun公司的一個口號,并得到了大多數(shù)軟件開發(fā)公司的認(rèn)同,這和微軟公司的模式不同,微軟提倡的是注重精英和封閉的模式, Java 程序設(shè)計語言是個面向?qū)ο蟮模唵蔚?、解釋性的、分布式的、安全的、健壯與系統(tǒng)無關(guān)、高性能、可移植、動態(tài)和多線程的語言。Java 平臺是基于 Java 語言的平臺,這樣的平臺非常流行,因此微軟公司推出了與之競爭的.NET平臺以及模仿Java的C#語言,Java是一個可以在不同操作系統(tǒng)(例如windows, unix等)上運行的編程語言,java平臺是指運行在各種終端(如pc、服務(wù)器、移動設(shè)備、嵌入式設(shè)備)的系統(tǒng)軟件,PC機(jī)上的java程序是用java SE開發(fā)出來的,服務(wù)器端的java程序是用javaEE開發(fā)出來的,移動設(shè)備的java程序是用java ME開發(fā)出來的。2.4 Eclipse簡介Eclipse是一個開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。 雖然大多數(shù)用戶很樂于將Eclipse當(dāng)作Java集成開發(fā)環(huán)境(IDE)來使用,但Eclipse 的目標(biāo)卻不僅限于此。Eclipse還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE),這個組件主要針對希望擴(kuò)展Eclipse的軟件開發(fā)人員,因為它允許他們構(gòu)建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的每樣?xùn)|西都是插件,對于給Eclipse提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。這種平等和一致性并不僅限于Java開發(fā)工具。盡管Eclipse是使用Java語言開發(fā)的,但它的用途并不限于Java語言;例如,支持諸如C/C+和COBOL等編程語言的插件已經(jīng)可用,或預(yù)計將會推出。Eclipse框架還可用來作為與軟件開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)?;贓clipse的應(yīng)用程序的一個突出例子是IBM® Rational® Software Architect,它構(gòu)成了IBM Java開發(fā)工具系列的基礎(chǔ)。至于Eclipse的安裝首先要創(chuàng)建一個java的工作環(huán)境,在sun的網(wǎng)站上下載j2se,安裝到自己的系統(tǒng)中,我下載的是1.4版本,安裝目錄為“D:j2sdk1.4.2_04”。下載地址為:/j2se/1.4.2/download.html設(shè)置環(huán)境參數(shù)的步驟如下: 右鍵“我的電腦”“屬性”“高級”“環(huán)境變量”增加: java_homeD:j2sdk1.4.2_04 ClassPath=d:j2sdk1.4.2_04;d:j2sdk1.4.2_04libtools.jar;d:j2sdk1.4. 2_04libdt.jar;d:j2sdk1.4.2_04bin Pathd:j2sdk1.4.2_04bin環(huán)境就設(shè)置好了。第3 章 系統(tǒng)需求分析和總體設(shè)計31用戶對電子郵件系統(tǒng)需求 (1)方便性。電子郵件系統(tǒng)可以像離線QQ信息一樣,在自己有時間的時候可以處理記錄下來的請求,通過電子郵件可以方便快捷地傳送文本信息、圖像文件、報表和計算機(jī)程序等信息。 (2)快捷性。電子郵件在傳遞過程中,若某個通信站點發(fā)現(xiàn)用戶給出的收信人的電子郵件地址有錯誤而無法繼續(xù)傳遞時,電子郵件會迅速地將原信件逐站退回,并告知其原因。當(dāng)郵件被送到目的地后,該計算機(jī)的郵件系統(tǒng)就立即將它放人收件人的信箱中,等候用戶自行讀取。用戶只要隨時以計算機(jī)聯(lián)機(jī)方式打開自己的電子郵件信箱,便可以查看自己的郵件。 (3)廣域性。電子郵件系統(tǒng)具有開放性,許多沒有連接到互聯(lián)網(wǎng)的用戶能夠通過本機(jī)的網(wǎng)關(guān)(Gateway)和網(wǎng)絡(luò)上的用戶相互交換郵件。 (4)透明性。電子郵件系統(tǒng)采用“存儲轉(zhuǎn)發(fā)”的方法幫助用戶傳送電子郵件,通過在互聯(lián)網(wǎng)絡(luò)的一些通信節(jié)點計算機(jī)上運行相應(yīng)的軟件,使這些計算機(jī)充當(dāng)“郵局”的角色。當(dāng)用戶希望通過互聯(lián)網(wǎng)絡(luò)給別人發(fā)送郵件時,首先要與為自己提供電子郵件的計算機(jī)聯(lián)機(jī),然后把要發(fā)送的郵件和收件人的郵件地址發(fā)給郵件系統(tǒng)。電子郵件系統(tǒng)就會把用戶的郵件通過網(wǎng)絡(luò)一站一站地送到目的地,所有過程對于用戶來說都是透明的。 (5)廉價性。網(wǎng)絡(luò)的空間可以說是無限大的,公司能夠?qū)⒉煌漠a(chǎn)品以及服務(wù)信息放置在網(wǎng)絡(luò)上,這樣用戶就能夠隨時從網(wǎng)絡(luò)上獲取這些信息,并且相對于電話,郵寄或印刷來說在網(wǎng)上存儲與發(fā)送信息是非常廉價的。在公司與顧客“一對一”關(guān)系的電子郵件服務(wù)中,費用低廉,從而節(jié)約大量費用。 (6)全天性。對顧客而言,電子郵件的優(yōu)點之一是沒有任何時間上的限制。一天24小時,一年365天內(nèi),任何時間都可發(fā)送電子郵件。比如,當(dāng)顧客發(fā)生問題時,他們隨時都可以把發(fā)生的問題發(fā)送給公司,而公司有關(guān)負(fù)責(zé)人可以在他方便的時候,查閱這些信件,決定哪些信件必須首先處理,哪些可以稍后處理,哪些應(yīng)該轉(zhuǎn)發(fā)給其他部門去承辦。而以前沒有電子郵件時,顧客的產(chǎn)品本身或產(chǎn)品在使用過程中發(fā)生了問題,需要等到公司人員上班時,才能給公司打電話。而且什么時候打電話也很講究,打早了,公司負(fù)責(zé)人還沒有上班,打晚了公司負(fù)責(zé)人又可能出去開會了。電子郵件的全天候服務(wù),從根本上解決了這種狀況,大大改善了公司與顧客的關(guān)系,改善了公司對顧客的服務(wù)。3.2產(chǎn)品可行性分析 電子郵件系統(tǒng)包括電子郵件客戶端和電子郵件服務(wù)器端,其中通過SMTP協(xié)議進(jìn)行發(fā)送郵件,POP3協(xié)議進(jìn)行接收郵件。電子郵件系統(tǒng)的工作過程和相關(guān)收發(fā)協(xié)議如下圖: 圖3.1電子郵件系統(tǒng)工作過程圖 Java Mail是Sun發(fā)布的用來處理E-mail的API。它可以方便的執(zhí)行一些常用的郵件傳輸。Java Mail API是Java對電子郵件處理的延伸,它可以處理各種E-mail格式,包括IMAP,POP3,SMTP,為Java應(yīng)用程序提供了收發(fā)電子郵件的公共接口,如下圖所示: 圖3.2JavaMail API的客戶端工作原理圖 JavaMail API主要位于ernet中,主要類框架圖如下: 圖3.3 JavaMail API中主要類的框架圖 1.java x.mail.Session:Session類代表JavaMail中的一次郵件會話.每個基于JavaMail的應(yīng)用程序至少有一次會話,也可以產(chǎn)生多次會話.發(fā)送郵件之前,通常應(yīng)該建立郵件會話。 它的作用有: (1)接收各種配置屬性信息:通過Properties對象設(shè)置的屬性信息; (2)初始化JavaMail環(huán)境:根據(jù)JavaMail的配置文件,初始化JavaMail環(huán)境以便通過Session對象創(chuàng)建其他重要類的實例。 2.javax.mail.Transport:郵件操作只有發(fā)送或接收兩種處理方式,JavaMail將這兩種不同操作描述為傳輸(javax.mail.Transport)和存儲(javax.mail.Store),傳輸對應(yīng)郵件的發(fā)送,而存儲對應(yīng)郵件的接收。 3.java.mail.Store 該類實際特定郵件協(xié)議上的讀,寫,監(jiān)視,查找等操作,通過javax.mail.Store類可以訪問javax.mail.Folder類. 4.javax.mail.MimeMessage該對象是實際發(fā)送的電子郵件的信息.郵件對象通常使用MimeMessage創(chuàng)建,創(chuàng)建該對象時應(yīng)傳入一個郵件會話參數(shù).該類采用InternetHeaders類來解析和保存e-mail的頂級RFC 822文件頭9.該類包含如下屬性: Protected byte content 該e-mail內(nèi)容的字節(jié)數(shù)組 protected internetHeaders headers 返回保存該e-mail的文件頭的對象 void addFrom(Address addresses 為該e-mail設(shè)置發(fā)件人的地址 void addHeader(String name ,String value) 在name的文件頭內(nèi)容上增加value; void addRecipients(Message.RecipientType type, Address addresses)該方法還 有一個重載的方法,都是增加指定類型的收件地址. Address getFrom返回該e-mail的發(fā)件人的地址列表 void setContent(Multipart mp) 為該e-mail設(shè)置內(nèi)容 5.javax.mail.Address 該對象用于確定發(fā)件人/收件人地址.和Message一樣,Address是個抽象類,時間使用的是他的子類,ernetAddress類. 一旦您創(chuàng)建了Session 和Message,并將內(nèi)容填入消息后,就可以用Address 確定信件地址了 6.javax.mail.Folder:Folder類用于分級組織郵件,并提供照J(rèn)avax.mail.Message格式訪問email的能力。3.3系統(tǒng)總體設(shè)計 3.3.1 電子郵件系統(tǒng)所包含的功能 圖3.4 系統(tǒng)功能圖 本系統(tǒng)主要包括: (1)登錄系統(tǒng):用某個郵箱的賬號和密碼登錄; (2)接收郵件:從指定郵箱服務(wù)器獲取郵件; (3)發(fā)送郵件:用此賬號發(fā)送郵件到指定的電子郵箱地址,包括發(fā)送普通 文本和附件; (4)群發(fā)郵件: 將郵件群發(fā)給指定郵件地址列表,包括抄送等; (5)郵件管理:查看郵件,刪除郵件; (6)系統(tǒng)配置:配置郵箱服務(wù)器的smtp地址和pop3地址;3.3.2電子郵件收發(fā)過程圖3.5電子郵件收發(fā)過程圖 電子郵件服務(wù)基于客戶/服務(wù)器模式,其工作過程如下:郵件客戶端和郵件服務(wù)器通過POP3協(xié)議收取郵件;通過SMTP傳輸郵件內(nèi)容,實現(xiàn)郵件信息交換。SMTP通過用戶代理(UA)和郵件傳輸代理程序(MTA)實現(xiàn)郵件的傳輸。 發(fā)送方編輯完畢的電子郵件發(fā)送給當(dāng)?shù)氐泥]件服務(wù)器,郵件服務(wù)器收到客戶送來的郵件,根據(jù)收件人的郵件地址發(fā)送到對方的郵件服務(wù)器中。對方的郵件服務(wù)器接收到其他郵件服務(wù)器發(fā)來的郵件,并根據(jù)郵件地址分發(fā)到相應(yīng)的電子郵箱中,這樣接受方可通過電子郵箱來讀取郵件,并對他們進(jìn)行相關(guān)的處理。 電子郵件在發(fā)送與接收過程中都要遵循SMTP、POP3等協(xié)議,這些協(xié)議確保了電子郵件在各種不同系統(tǒng)之間的傳輸。其中,SMTP負(fù)責(zé)電子郵件的發(fā)送,而POP3則用于接收Internet上的電子郵件。 3.3.3 服務(wù)器的設(shè)置 用戶在發(fā)送和接收郵件的時候,需要設(shè)置好郵件服務(wù)器的地址、郵箱賬號和密碼等這些信息。該系統(tǒng)提供了對上述配置的設(shè)置和存儲功能,這里,我們將配置信息存儲在一個屬性文件里面。其文件名為perties,位于工程的根目錄下,可使用perties 類的setProperty()方法和getProperty()方法對屬性文件中的屬性內(nèi)容進(jìn)行存取。本系統(tǒng)smtp perties文件的內(nèi)容格式如下 : popAddress=pop3服務(wù)器地址(如) smtpAddress=smtp服務(wù)器地址(如) username=用戶名(如x y z) password=密碼(如123456) 第4章 詳細(xì)設(shè)計4.1 登錄功能的設(shè)計 (1)選擇登錄服務(wù)器,連接服務(wù)器。 (2)選擇指定的郵件地址和密碼。在本系統(tǒng)中有所提供的Mail服務(wù)器創(chuàng)建了賬戶進(jìn)行登錄。必須選用正確的郵件地址和密碼才可以登錄,在該模塊中,用戶輸入賬戶和密碼,程序會根據(jù)用戶輸入的用戶名和密碼在用戶信息數(shù)表中查找,如果查找成功,就進(jìn)入系統(tǒng)主界面,如果查找失敗,就會報錯。 登錄的設(shè)計主要有下圖的幾個步驟。 圖4.1登錄流程圖4.2發(fā)送郵件的設(shè)計 (1)編寫文本郵件。該內(nèi)容是電子郵件系統(tǒng)中最基本的功能。用戶需填寫郵件信息:包括收件人,主題,文字內(nèi)容。 (2)上傳附件。在編寫郵件時,郵件內(nèi)容可以和附件(如圖片,聲音等)一起發(fā)送,這樣就需要先將附件上傳到服務(wù)器,然后再發(fā)送給對方。 發(fā)送郵件的設(shè)計如下圖所示: 圖4.2發(fā)送郵件流程圖4.3接收郵件的設(shè)計 (1)接收郵件。包括發(fā)件人,發(fā)件時間。這是一個電子郵件系統(tǒng)最基本的功能。(2)瀏覽到郵件列表,也可看到郵件主題,是按時間先后排序。 接收郵件的設(shè)計如下圖所示: 圖4.3接收郵件流程圖4.4郵件管理的設(shè)計 (1)查看郵件內(nèi)容。包括發(fā)郵件的時間,郵件的內(nèi)容和主題,以及發(fā)件人,以達(dá)到信息傳遞 (2)刪除郵件。要刪除郵件,只需先選擇某郵件,再單擊刪除命令就可以刪除郵件。此外還可以批量刪除郵件,這也只需要多個選擇郵件,再單擊刪除就能實現(xiàn)。 郵件管理的設(shè)計如下圖所示:圖4.4郵件管理圖第5章 系統(tǒng)功能的編碼實現(xiàn)5.1用戶登錄界面的實現(xiàn) 用戶選擇對應(yīng)的郵件服務(wù)器 然后輸入賬號密碼登錄,郵件服務(wù)器的配置會保存到配置文件中。例如 選擇的是 則SMTP地址為:,POP3地址為:。 5.1 登錄界面圖 部分實現(xiàn)的核心代碼: private boolean saveConfig() String server = (String) typeBox.getSelectedItem();ConfigBean configBean = new ConfigBean();configBean.setUserName(userNameText.getText() + server);configBean.setPassWord(passWordText.getText();configBean.setType(server);if (server.equals() configBean.setSmtpAddress();configBean.setPopAddress(); else if (server.equals(163.com) configBean.setSmtpAddress();configBean.setPopAddress(); else configBean.setUserName(userNameText.getText() + );configBean.setSmtpAddress();configBean.setPopAddress();ReturnType type = PropertiesUtility.saveConfig(configBean);if (type = ReturnType.RIGHT) return true;return false;5.2主界面的實現(xiàn) 當(dāng)用戶登錄后,會進(jìn)入到該界面,可以選擇需要的服務(wù)(發(fā)郵件,收郵件,服務(wù)器配置(Config),點擊左邊的相應(yīng)郵件功能按鈕,右邊會顯示相應(yīng)的郵件界面。圖5.2主界面圖 部分實現(xiàn)的核心代碼: public void setLayout() try loadImage();container = this.getContentPane();container.setLayout(null);container.setBackground(new Color(168, 193, 227);this.setIconImage(titleImage);setLeftPanel();setSendPanel();container.add(controlPanel); catch (Exception e) System.out.println(e.getMessage(); 5.3 郵件配置界面的實現(xiàn) 點擊主界面上方的config按鈕會彈出改配置框,通過該界面可以查看以及修改賬戶和服務(wù)器地址圖5.3郵件配置界面圖 部分實現(xiàn)代碼: private void addUserName() userNameLabel = new JLabel(UserName:); userNameLabel.setFont(new Font(黑體, Font.BOLD, 14); userNameLabel.setBounds(14, 25, 72, 15); container.add(userNameLabel); userNameText = new JTextField(); userNameText.setBounds(92, 20, 180, 25); container.add(userNameText); 5.4 發(fā)送郵件界面的實現(xiàn)填好收件人地址,主題,內(nèi)容,抄送或添加附件,點擊發(fā)送按鈕,即會發(fā)送相應(yīng)的內(nèi)容到對方郵箱。點擊重置按鈕所有內(nèi)容會清空。圖5.4發(fā)送郵件界面圖 部分實現(xiàn)的代碼: public void addButton() send = new JButton(發(fā) 送); send.setBounds(80, 425, 100, 30); sendPanel.add(send); send.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) boolean temp = check_Text();if (temp) send_Event(); );JButton reset = new JButton(重 置);reset.setBounds(300, 425, 100, 30);sendPanel.add(reset);reset.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) reset_Event(););5.5 接收郵件界面的實現(xiàn) 點擊收取郵件按鈕 就可收取該賬戶的郵件,并按先后時間顯示郵件列表。圖5.5接收郵件的界面圖 部分實現(xiàn)的代碼: public void initTable() defaultTable = new MyTableModel();addColumnName(defaultTable);table = new JTable(defaultTable);setTableAttr();JScrollPane scrollPane = new JScrollPane(table);scrollPane.setBounds(5, 25, 475, 400);receivePanel.add(scrollPane);defaultTable.addTableModelListener(new TableModelListener() Overridepublic void tableChanged(TableModelEvent e) );table.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent e) mouse_Event(e););第6章 系統(tǒng)實現(xiàn)的功能測試 6.1 登錄郵箱測試 圖6.1登錄郵箱測試 選擇好服務(wù)器,然后輸入對應(yīng)的賬號和密碼 然后點擊登錄,則登錄郵箱成功然后會進(jìn)入到如上圖所示的主界面6.2發(fā)送郵件測試 包括發(fā)送文字和附件,以及抄送測試。抄送就是你寫的這封郵件能同時發(fā)給多個人,并且收件人知道你把這封郵件同時發(fā)給了他和抄送欄里寫的郵件地址的人。圖6.2.1發(fā)送文字郵件測試圖圖6.2.2發(fā)送附件測試圖圖6.2.3抄送功能測試圖6.3接收郵件測試 點擊收取郵件,就能達(dá)到郵件的收取。圖6.3接收郵件測試圖6.4查看郵件內(nèi)容測試 雙擊要查看的郵件后會顯示出郵件內(nèi)容圖6.4查看郵件內(nèi)容測試圖6.5刪除郵件測試 先選擇單個要刪除的郵件,也可同時選擇多個要刪除的郵件,點擊刪除標(biāo)記按鈕,就能刪除郵件,并由相關(guān)提示,提醒刪除郵件成功,顯示出郵件刪除后的最新列表。 圖6.5.1 刪除單個郵件測試圖圖6.5.2刪除多個郵件測試圖 下圖是刪除郵件成功的提醒圖6.5.2 刪除郵件成功提醒圖圖6.5.3 郵件刪除后的新列表圖第7章 總結(jié)在本次畢業(yè)設(shè)計開發(fā)過程中,我遇到了許許多多的困難,系統(tǒng)雖然基本完成,但是也仍存在一些不足,在這里只是簡要敘述一些主要的困難和不足之處。在開發(fā)郵件系統(tǒng)的過程中,中文亂碼也是一個比較棘手的問題,因為亂碼可能會在郵件的標(biāo)題,附件以及正文等諸多地方出現(xiàn),但是沒有某一種方法能夠解決全部的亂碼問題,因而解決亂碼問題也是系統(tǒng)開發(fā)的重點難點之一。經(jīng)過一番上網(wǎng)查找和請教老師,終于找出導(dǎo)致亂碼可能出現(xiàn)的原因,通過網(wǎng)上和老師給予的擬采用的解決途徑,終于使亂碼問題得到解決。此外,在郵件系統(tǒng)的開發(fā)中如何處理各種類型的信息成為了開發(fā)過程中的又一個重點與難點,事實上,Java Mail底層在接收處理MIME數(shù)據(jù)方面依賴與JAF,JAF提供了對MIME數(shù)據(jù)進(jìn)行處理的部件,它通常用于發(fā)送附件以及實現(xiàn)對MIME數(shù)據(jù)的常用操作。在開發(fā)過程中要編寫的東西很多。并且由于自己剛接觸,很多都不熟悉,所以出現(xiàn)問題解決速度很慢,對功能的實現(xiàn)方法也比較少。本次畢業(yè)設(shè)計在很多地方未能考慮周全以至于系統(tǒng)存在著很多不足之處,這些不足主要是由于時間不足造成的,這就需要在以后系統(tǒng)維護(hù)過程中逐步發(fā)現(xiàn),并不斷進(jìn)行升級,都有待進(jìn)一步改善。通過本次課程設(shè)計,對java mail也有一些感悟,感覺它真是一個神奇的東西,里面富含那么多的類,給人們帶來了極大的方便。一個人編寫代碼真的是很容易出現(xiàn)一些可能看不到的小問題,從古至今人們確實從自己身上找問題比較難,所以說請教朋友和老師,注重合作更有利于項目的開發(fā)還值得一提的,實踐確實是學(xué)習(xí)一樣新技術(shù)最快的方法。理論固然要看,但是需要理論結(jié)合實踐,在實踐操作中深化對理論的理解,這樣才掌握得快。 參考文獻(xiàn)1(美)埃史爾.Java編程思想(第四版).機(jī)械工業(yè)出版社.20072 Liang,Y.D.Java語言程序設(shè)計基礎(chǔ)篇.機(jī)械工業(yè)出版社,20063 李金銘,林曉宇,寧正元面向?qū)ο蟪绦蛟O(shè)計Java北京:北京交通大學(xué)出版社,20054 朱福喜著Java 項目設(shè)計與開發(fā)范例M北京:電子工業(yè)出版社,20055(美) Nathaniel T. Schutta, Ryan Asleson著.Ajax與Java高級程序設(shè)計.郵電出版社,20076 OReilly & Associates,Inc Java Cookbookin the United States or Canada7 Oreilly,Java Servlet Programming,American:Sernni Yey8 印雯,Java語言與面向?qū)ο蟪绦蛟O(shè)計.北京:清華大學(xué)出版,2002年. 9 畢廣吉.Java程序設(shè)計實例教程M. 北京:冶金工業(yè)出版社,2007年10張桂珠,劉麗,陳愛國 Java面向?qū)ο蟪绦蛟O(shè)計(第2版) 北京郵電大學(xué)出版社11劉騰紅,孫細(xì)明.信息系統(tǒng)分析與設(shè)計M. 北京:科學(xué)出版社,2003年致 謝在老師和同學(xué)的支持與幫助下,我順利地完成了本次畢業(yè)設(shè)計。通過這段

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論