已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
西安建筑科技大學(xué)課程設(shè)計(論文)第1頁共43頁目錄第1章引言2第2章需求分析321產(chǎn)品可行性分析322產(chǎn)品功能需求分析522電子郵件系統(tǒng)收發(fā)郵件的過程5第3章總體設(shè)計731本系統(tǒng)的總體架構(gòu)模型732系統(tǒng)模塊的劃分8第4章詳細(xì)設(shè)計941接收郵件模塊942發(fā)送和回復(fù)郵件模塊943郵件處理模塊1044界面實現(xiàn)的流程圖1045郵件發(fā)送過程的流程圖1146郵件接收流程1347用戶鑒權(quán)和客戶端配置信息流程1548閱讀郵件流程16第5章系統(tǒng)功能測試1851登陸界面及郵箱賬戶設(shè)置界面測試1852主界面測試1853發(fā)送界面與收件箱界面測試1854閱讀郵件界面測試20第6章結(jié)論與展望2161結(jié)論2162展望21致謝22參考文獻(xiàn)23附錄24西安建筑科技大學(xué)課程設(shè)計(論文)第2頁共43頁第1章引言電子郵件(簡稱EMAI1又稱電子信箱、電子郵政,表示通過電子通訊系統(tǒng)進(jìn)行信件的書寫、發(fā)送和接收,它是繼電話、電報和傳真之后最快捷、最方便的通訊工具,是20世紀(jì)人類最偉大的發(fā)明。早在互聯(lián)網(wǎng)流行很久以前,電子郵件就已經(jīng)存在。它是在主機多終端的主從式體系中通過一臺計算機終端向另一臺計算機終端傳送文本信息的相對簡單方法發(fā)展起來的,也就是人們常說的C/S架構(gòu)。如今,電子郵件已經(jīng)將人與人越來越緊密地聯(lián)系在一起,成為人們生活的一部分。通過電子郵件系統(tǒng),人們可以用非常低廉的價格,以非??焖俚姆绞?,與世界上任何一個網(wǎng)絡(luò)用戶聯(lián)系。而電子郵件的形式也從原來的純文本方式變成現(xiàn)在的HTML頁面并加載附件的多彩形式,同時,人們還可以得到大量免費的新聞、專題郵件,并實現(xiàn)輕松的信息搜索,這是任何傳統(tǒng)的方式也無法相比的。電子郵件的使用簡易、投遞迅速、收費低廉、易于保存、全球暢通無阻,使得它被廣泛地應(yīng)用。電子郵件收發(fā)系統(tǒng)基于CLIENT/SERVER模式,主要功能通過收發(fā)電子郵件客戶端程序?qū)崿F(xiàn)。收發(fā)電子郵件需要標(biāo)準(zhǔn)的會話協(xié)議支持,SMTP(SIMPLEMAILTRANSFERPROTOCOL)用于發(fā)送電子郵件,POP3協(xié)議(POSTOFFICEPROTOCOL)用于接收電子郵件。電子郵件使人們的交流方式得到了極大的改變?nèi)藗兤綍r所發(fā)送或接收的電子郵件,并不是由本機來實現(xiàn)SMTP協(xié)議與POP3協(xié)議,電子郵件內(nèi)容全是存儲在相應(yīng)服務(wù)商的POP3服務(wù)器上,用戶必須要登錄到相應(yīng)的服務(wù)器上才能進(jìn)行瀏覽、查詢或者刪除操作,但是,在網(wǎng)絡(luò)繁忙或大家集中傳輸數(shù)據(jù)的時候,人們可能收不到消息或者打開很慢為了解決這一難題,我們開發(fā)了電子郵件收發(fā)系統(tǒng),將郵件服務(wù)器上的內(nèi)容保存到本地機器上,這樣即使在網(wǎng)絡(luò)斷開的情況下,也能查詢已存在本地機器上的郵件。西安建筑科技大學(xué)課程設(shè)計(論文)第3頁共43頁第2章需求分析21產(chǎn)品可行性分析整個電子郵件系統(tǒng)由電子郵件服務(wù)器端和電子郵件客戶端組成,其工作過程及一些涉及到的協(xié)議如圖21所示圖21電子郵件系統(tǒng)工作過程圖其中SMTP是因特網(wǎng)電子郵件系統(tǒng)重要的應(yīng)用層協(xié)議。它使用由TCP提供的可靠的數(shù)據(jù)傳輸服務(wù)把郵件消息從發(fā)信人郵箱所在郵件服務(wù)器傳送到收信人郵箱所在郵件服務(wù)器。SMTP是客戶服務(wù)器應(yīng)用模式,由發(fā)信人的郵件服務(wù)器執(zhí)行的客戶端和收信人的郵件服務(wù)器執(zhí)行的服務(wù)器端組成。SMTP的客戶端和服務(wù)器端同時運行在每個郵件服務(wù)器上。當(dāng)一個郵件服務(wù)器向其它郵件服務(wù)器發(fā)送郵件消息時,它是作為SMTP客戶端。當(dāng)一個郵件服務(wù)器從其它郵件服務(wù)器接收郵件消息時,它是作為SMTP服務(wù)器端。SMTP規(guī)范定義在RFC821中,它的作用是把郵件消息從發(fā)信人的郵件服務(wù)器傳送到收信人的郵件服務(wù)器。SMTP限制所有郵件消息的信體必須是簡單的7位ASCII字符格式。這個限制使得二進(jìn)制多媒體數(shù)據(jù)在由SMTP傳送之前必須編碼成7位ASCII文本;SMTP傳送完畢之后,再把相應(yīng)的7位ASCII文本郵件消息解碼成二進(jìn)制數(shù)據(jù)。POP3是RFC1939中定義的一個簡單的郵件訪問協(xié)議,其功能有限。POP3開始于用戶代理打開一個到POP3服務(wù)器端口號110的TCP連接。POP3服務(wù)器西安建筑科技大學(xué)課程設(shè)計(論文)第4頁共43頁與郵件服務(wù)器運行在相同的服務(wù)器主機上,前者從用戶的郵箱中讀取并可能刪除郵件消息,后者往用戶的郵箱中寫入郵件消息。TCP連接建立好之后,POP3依次經(jīng)歷授權(quán)認(rèn)證、處理和更新3個階段。在授權(quán)階段,用戶代理分別發(fā)出一個用戶名和一個口令以認(rèn)證下載郵件消息的用戶。在處理階段,用戶代理獲取郵件消息,并可以標(biāo)記待刪除的郵件消息或去掉這些標(biāo)記,獲取郵件統(tǒng)計信息。更新階段發(fā)生在用戶代理發(fā)出QUIT命令以結(jié)束當(dāng)前POP3會話之后,期間POP3服務(wù)器刪除己加過刪除標(biāo)記的郵件消息。在POP3會話期間,用戶代理發(fā)出命令,POP3服務(wù)器則對每個命令響應(yīng)以一個應(yīng)答??赡艿膽?yīng)答有兩個指出剛才的命令執(zhí)行成功的OK有時后跟一個解釋性消息和指出剛才的命令執(zhí)行有誤的ERR。一個郵件的收發(fā)就是通過SMTP傳遞消息到對端郵件服務(wù)器,對端客戶使用POP3協(xié)議從服務(wù)器上獲得郵件的過程。在本設(shè)計中,采用自己編寫基于SOCKET的方法,來解析協(xié)議,進(jìn)行郵件收發(fā)。同時,在進(jìn)行郵件收發(fā),需要提供基于BASE64加密解密的鑒權(quán)信息,其中BASE64是一種很簡單的編碼轉(zhuǎn)換對于待編碼數(shù)據(jù),以3個字節(jié)為單位,依次取6位數(shù)據(jù)并在前面補上兩個0形成新的8位編碼,由于3846,這樣3個字節(jié)的輸入會變成4個字節(jié)的輸出,長度上增加了1/3。上面的處理還不能保證得到的字符都是可見字符,為了達(dá)到此目的,BASE64制定了一個編碼表,進(jìn)行統(tǒng)一的轉(zhuǎn)換,見表21。碼表的大小為2664,這也是BASE64名稱的由來。由于編碼是以3個字節(jié)為單位,當(dāng)剩下的字符數(shù)量不足3個字節(jié)時,則應(yīng)使用0進(jìn)行填充,相應(yīng)地,輸出字符則使用占位,因此編碼后輸出的文本末尾可能會出現(xiàn)1至2個。表21BASE64編碼表值編碼值編碼值編碼值編碼值編碼值編碼值編碼值編碼0A8I16Q24Y32G40O48W5641B9J17R25Z33H41P49X5752C10K18S26A34I42Q50Y5863D11L19T27B35J43R51Z5974E12M20U28C36K44S5206085F13N21V29D37L45T5316196G14O22W30E38M46U542627H15P23X31F39N47V55363/西安建筑科技大學(xué)課程設(shè)計(論文)第5頁共43頁BASE64的加密解析,SUN公司有自己內(nèi)部專用的API,該API位于JRE/LIB下,但是該API并沒有JAVADOC,屬于不推薦使用的方法,將在后續(xù)JDK版本中被剔除,因為本設(shè)計根據(jù)BASE64編碼表,自行編寫B(tài)ASE64加密解密方法。分析電子郵件傳輸過程中的協(xié)議和加密算法后,本設(shè)計進(jìn)行自主開發(fā)是可行的。22產(chǎn)品功能需求分析電子郵件系客戶端發(fā)送郵件閱讀郵件賬戶設(shè)置保存郵件登陸驗證接收郵件圖22系統(tǒng)總體功能圖其中本設(shè)計實現(xiàn)的是一個電子郵件客戶端,類似于OUTLOOK,有用戶郵箱賬戶設(shè)置,登陸驗證,接收郵件,閱讀郵件,保存郵件,發(fā)送郵件等功能。發(fā)送郵件根據(jù)用戶設(shè)置的公網(wǎng)郵箱賬戶或者一個公網(wǎng)不存在的自己私人域內(nèi)的符合郵箱命名規(guī)范的郵箱賬戶,可實現(xiàn)對公網(wǎng)郵箱和本客戶端(比如新浪,QQ,163)的郵件收發(fā);若郵箱賬戶是自己隨機設(shè)置的賬戶,則不可以向除本客戶端以外的郵件服務(wù)器發(fā)送郵件;接收郵件接收來自本客戶端私人郵箱發(fā)來的郵件,在接收郵件的同時,將對郵件進(jìn)行默認(rèn)保存,接收完成后,點擊即可實現(xiàn)對郵件的閱讀;登陸驗證客戶端在啟動的時候,會對用戶的賬戶信息與客戶端內(nèi)部保存的信息,進(jìn)行鑒權(quán),防止旁人使用客戶端亂發(fā)垃圾郵件;賬號設(shè)置這個功能主要是實現(xiàn)對郵件發(fā)送代理的選擇,決定發(fā)送郵件功能的能力。22電子郵件系統(tǒng)收發(fā)郵件的過程西安建筑科技大學(xué)課程設(shè)計(論文)第6頁共43頁圖23收發(fā)郵件過程圖1發(fā)信人調(diào)用用戶代理來編輯要發(fā)送的郵件。用戶代理用SMTP把郵件傳送給發(fā)送端郵件服務(wù)器。2發(fā)送端郵件服務(wù)器將郵件放入郵件緩存隊列中,等待發(fā)送。3運行在發(fā)送端郵件服務(wù)器的SMTP客戶進(jìn)程,發(fā)現(xiàn)在郵件緩存中有待發(fā)送的郵件,就向運行在接收端郵件服務(wù)器的SMTP服務(wù)器進(jìn)程發(fā)起TCP連接的建立。4TCP連接建立后,SMTP客戶進(jìn)程開始向遠(yuǎn)程的SMTP服務(wù)器進(jìn)程發(fā)送郵件。當(dāng)所有的待發(fā)送郵件發(fā)完了,SMTP就關(guān)閉所建立的TCP連接。5運行在接收端郵件服務(wù)器中的SMTP服務(wù)器進(jìn)程收到郵件后,將郵件放入收信人的用戶郵箱中,等待收信人在方便時進(jìn)行讀取。收信人在打算收信時,調(diào)用用戶代理,使用POP3(或IMAP)協(xié)議將自己的郵件從接收端郵件服務(wù)器的用戶郵箱中的取回(如果郵箱中有來信的)。西安建筑科技大學(xué)課程設(shè)計(論文)第7頁共43頁第3章總體設(shè)計31本系統(tǒng)的總體架構(gòu)模型主界面用戶鑒權(quán)和客戶端配置信息主界面加載時,被調(diào)用登陸界面賬號界面發(fā)送郵件界面接收郵件界面閱讀郵件界面登陸鑒權(quán)發(fā)送郵件郵箱賬號設(shè)置發(fā)送郵件線程郵件接收線程用戶信息模型賬號信息模型啟動SMTP模型BASE64加密未讀郵件模型郵件接收保存方法郵件保存到文件圖31系統(tǒng)的總體模型圖圖31是該客戶端的系統(tǒng)架構(gòu)圖,圖中包含了六個圖形用戶界面,兩個郵件接收和發(fā)送線程,以及一些相關(guān)的輔助方法和數(shù)據(jù)模型。其中,各個圖形用戶界面是為了方便用戶使用該客戶端而設(shè)計;用戶鑒權(quán)和客戶端配置信息,是主界面在加載時,針對每個特定的用戶,加載其個人設(shè)置;用戶信息模型和賬戶信息模型用來對用戶進(jìn)行登錄驗證,設(shè)置郵箱賬戶時的信息進(jìn)行封裝。發(fā)送郵件線程等待來自客戶的發(fā)送請求,收到請求后,首先根據(jù)SMTP模型和用戶輸入信息,封裝一個SMTP消息對象;接著對用戶賬戶和密碼進(jìn)行BASE64加密;最后將封裝好的信息對象,交由發(fā)送郵件方法進(jìn)行發(fā)送;郵件接收線程是客戶端加載成功后,就開始監(jiān)聽25端口,當(dāng)有郵件信息發(fā)西安建筑科技大學(xué)課程設(shè)計(論文)第8頁共43頁送到來時,將接收到的信息封裝到一個未讀郵件模型中去,然后將該模型傳遞給郵件接收和保存方法,該方法將會對郵件在硬盤中進(jìn)行保存,并更新客戶端配置信息中得未讀郵件信息。32系統(tǒng)模塊的劃分按照本系統(tǒng)的總體功能劃分,可以將這個電子郵件客戶端分成5大模塊,首先是登錄模塊,作為驗證需要;其次是接收郵件模塊,該模塊負(fù)責(zé)郵件的接收,再次是發(fā)送模塊,該模塊負(fù)責(zé)該對方發(fā)送郵件;接著是郵件處理模塊,該模塊負(fù)責(zé)郵件的閱讀、保存等操作;然后是郵件賬戶的管理,該操作負(fù)責(zé)設(shè)置客戶端對公網(wǎng)的身份標(biāo)識。圖32給出了本系統(tǒng)的模塊體系電子郵件客戶端登錄模塊接收郵件模塊發(fā)送郵件模塊郵件賬戶管理郵件處理模塊圖32系統(tǒng)模塊體系圖西安建筑科技大學(xué)課程設(shè)計(論文)第9頁共43頁第4章詳細(xì)設(shè)計41接收郵件模塊接收郵件模塊主要由接收郵件線程監(jiān)聽端口完成對郵件的接收并對其進(jìn)行保存和刷新主界面,包括下圖中的幾個部分。(1)接收郵件線程。一個郵件系統(tǒng)最基本的功能是能夠接受發(fā)送的郵件。為了可以同時接收多個郵件,保持并發(fā)性,本設(shè)計使用JAVA多線程的功能,設(shè)計一個可以多線程的接收郵件線程;(2)保存郵件。接收到對方的郵件以后,必須先對郵件進(jìn)行保存?zhèn)浞荩缓髮⑧]件信息封裝到未讀郵件模型后,再顯示出來,可以隱去一些不必要的內(nèi)容,只顯示郵件關(guān)鍵信息給用戶;(3)刷新界面。當(dāng)客戶端收到一個郵件后,必須能夠?qū)崟r刷新主界面以提醒用戶。接收郵件和附件模塊的圖示接收郵件模塊接收郵件保存郵件刷新界面圖41接收郵件和附件模塊圖42發(fā)送和回復(fù)郵件模塊發(fā)送郵件模塊主要由發(fā)送郵件線程文件完成,包括圖中的幾個部分。(1)編寫新郵件。該部分也是電子郵件系統(tǒng)中最基本的功能。(2)發(fā)送新郵件。在編寫完成新郵件后,電機該功能將郵件內(nèi)容發(fā)送給對方。發(fā)送郵件模塊的圖示西安建筑科技大學(xué)課程設(shè)計(論文)第10頁共43頁發(fā)送郵件模塊編寫新郵件發(fā)送新郵件圖42發(fā)送郵件模塊圖43郵件處理模塊郵件處理模塊主要對郵件進(jìn)行閱讀和保存功能,包括圖中的幾個部分。(1)顯示郵件內(nèi)容,新建一個界面顯示用戶選擇的郵件內(nèi)容。(2)保存郵件。在接收到郵件的同時,默認(rèn)自動保存郵件。(3)顯示錯誤信息。在出現(xiàn)一些登錄錯誤,刪除錯誤,發(fā)送錯誤時,將顯示不同的錯誤信息提示用戶。郵件處理模塊的圖示郵件處理模塊顯示郵件內(nèi)容顯示錯誤信息自動保存郵件圖43郵件處理模塊圖44界面實現(xiàn)的流程圖如上所述,本設(shè)計的郵件客戶端需要六個不同的界面,都采用JAVASWING技術(shù)實現(xiàn),JAVASWING提供豐富的圖形組件和多樣的布局方式,以及事件注冊處理機制,在本設(shè)計中使用JAVASWING技術(shù)實現(xiàn)這些界面,其流程如圖44所示西安建筑科技大學(xué)課程設(shè)計(論文)第11頁共43頁開始結(jié)束聲明控件對象聲明面板容器對象初始化面板容器對象并設(shè)置布局方式初始化控件對象并注冊事件將控件添加到面板對象中圖44界面實現(xiàn)流程圖其中的部分代碼如下BUTTONPANELADDNEWBUTTONBUTTONPANELADDRECBUTTONBUTTONPANELADDRECBOXBUTTONBUTTONPANELADDDRAFTBUTTONBUTTONPANELADDSETBUTTONJFRAMESETBOUNDS0,0,SCREEN_WIDTH3/4,SCREEN_HEIGHT3/5JFRAMESETBACKGROUNDCOLORWHITEJFRAMEADDBUTTONPANEL,NEWBORDERLAYOUTWESTJFRAMEADDTAB,NEWBORDERLAYOUTCENTERJFRAMESETVISIBLETRUE45郵件發(fā)送過程的流程圖郵件發(fā)送過程需要使用SMTP協(xié)議,因此在本設(shè)計中,將SMTP協(xié)議的各個字段封裝到了一個對象中去,便于維護(hù)和管理,郵件發(fā)送的實現(xiàn)過程如圖45所示,其部分實現(xiàn)代碼如下STRINGDESTIPGETEMAILNAMEINFOGETUSERNAMEUSERNAMEREPLACE“_“,“SOCKETNEWSOCKETDESTIP,PORTBUFFEREDREADERBRGETREADERSOCKETPRINTWRITERPWGETWRITERSOCKETSENDANDRECEIVENULL,BR,PW西安建筑科技大學(xué)課程設(shè)計(論文)第12頁共43頁IFSENDRESULTEQUALSFAILEDJOPTIONPANESHOWMESSAGEDIALOGMAINUIJFRAME,“連接郵件服務(wù)器失敗“,NULL,0RETURNSENDANDRECEIVESMTPGETMAIL,BR,PWIFSENDRESULTEQUALSFAILEDRETURNSENDANDRECEIVESMTPGETREPT,BR,PWIFSENDRESULTEQUALSFAILEDRETURNSENDANDRECEIVESMTPGETDATA,BR,PWIFSENDRESULTEQUALSFAILEDRETURNSENDANDRECEIVEMESSAGEGETFROM“RN“MESSAGEGETTO“RN“MESSAGEGETDATA,BR,PWIFSENDRESULTEQUALSFAILEDJOPTIONPANESHOWMESSAGEDIALOGMAINUIJFRAME,“郵件發(fā)送失敗“,NULL,0RETURNSENDANDRECEIVESMTPGETQUIT,BR,PWIFSENDRESULTEQUALSFAILEDJOPTIONPANESHOWMESSAGEDIALOGMAINUIJFRAME,“郵件發(fā)送成功“,NULL,0RETURN開始結(jié)束啟動一個發(fā)送線程填充SMTP對象獲得對方郵箱服務(wù)器地址對郵箱賬號和密碼進(jìn)行BASE64加密新建SOCKET對象,連接對方郵箱服務(wù)器的25端口是否成功郵件發(fā)送過程錯誤提示對話框是否填充MESSAGE對象圖45郵件發(fā)送過程其中郵件發(fā)送過程分為如下幾步1、發(fā)送HELO命令,并等到回復(fù),若回復(fù)爭取,則發(fā)送下一個命令,西安建筑科技大學(xué)課程設(shè)計(論文)第13頁共43頁若失敗停止發(fā)送,下面步驟皆是如此處理;2、發(fā)送EHLO命令;3、發(fā)送AUTHLOGIN命令,進(jìn)行用戶名和密碼的鑒權(quán)請求;4、發(fā)送BASE64加密后的用戶名;5、發(fā)送BASE6加密后的密碼;6、若鑒權(quán)成功發(fā)送MAILFROM命令;7、發(fā)送RCPTTO命令,告知服務(wù)器郵件的接收方;8、發(fā)送DATA命令,告知服務(wù)器接下來要發(fā)送郵件內(nèi)容;9、在本設(shè)計中郵件內(nèi)容被封裝到一個MESSAGE模型中,在本步中,發(fā)送的是該模型的一個對象;10、在收到成功響應(yīng)后,發(fā)送“”結(jié)束發(fā)送過程。46郵件接收流程郵件接收流程是該設(shè)計的基本功能之一,其使用的仍是SMTP協(xié)議流程,在本設(shè)計中,針對收到的郵件會將其封裝到一個未讀郵件的對象中去,具體流程如圖46所示,其部分代碼如下所示開始結(jié)束啟動接收郵件線程收到對方請求,發(fā)送收到響應(yīng)碼接收對方郵件信息建立SOCKET連接發(fā)送響應(yīng)給對方是否成功保存郵件到本地磁盤錯誤提示對話框是否刷新主界面圖46郵件接收流程西安建筑科技大學(xué)課程設(shè)計(論文)第14頁共43頁WHILEREQUESTBRREADLINENULLIFREQUESTCONTAINS“MAILFROM“PWPRINTLN“250SENDEROK“CONTINUEELSEIFISMAILFROMPWPRINTLN“500COMMANDNOTRECOGNIZED“CONTINUEIFREQUESTCONTAINS“RCPTTO“PWPRINTLN“250RECIPIENTOK“CONTINUEELSEIFISRCPTTOPWPRINTLN“500COMMANDNOTRECOGNIZED“CONTINUEIFREQUESTCONTAINS“DATA“ISDATATRUEPWPRINTLN“354ENTERCONTENT“CONTINUEELSEIFISDATAPWPRINTLN“500COMMANDNOTRECOGNIZED“CONTINUEIFISDATASTRINGBUFFERAPPENDREQUESTSTRINGBUFFERAPPEND“IFSTRINGBUFFERTOSTRINGENDSWITH“ISMESSAGETRUECONTENTSTRINGBUFFERTOSTRINGSUBSTRING0,STRINGBUFFERTOSTRINGLENGTH1SYSTEMOUTPRINTLN“CONTENTIS“CONTENTPWPRINTLN“250OK“IFREQUESTCONTAINS“QUIT“PWPRINTLN“221“GETEMAILNAMEINFOGETHOSTNAMEE_MAILCONFIGGETEMAILCFGGETEMAILNAMERETURNPRIVATEPRINTWRITERGETWRITERSOCKETSOCKETTHROWSIOEXCEPTION/TODOAUTOGENERATEDMETHODSTUBOUTPUTSTREAMOUTSOCKETGETOUTPUTSTREAMRETURNNEWPRINTWRITEROUT,TRUE西安建筑科技大學(xué)課程設(shè)計(論文)第15頁共43頁PRIVATEBUFFEREDREADERGETREADERSOCKETSOCKETINPUTSTREAMISNULLTRYISSOCKETGETINPUTSTREAMCATCHIOEXCEPTIONEEPRINTSTACKTRACEBUFFEREDREADERBRNEWBUFFEREDREADERNEWINPUTSTREAMREADERISRETURNBR47用戶鑒權(quán)和客戶端配置信息流程該模塊是在主界面加載前,針對不同的用戶,加載相應(yīng)的設(shè)置,其包含保存用戶信息流程,更改用戶信息流程,保存郵箱賬戶信息流程,更改郵箱賬戶信息流程,獲取收到的郵件信息流程,設(shè)置郵件是否已讀流程。其中這三組流程處理方式一致,獲取和更改用戶信息流程如圖47,48所示,部分處理代碼如下。開始結(jié)束讀取本地XML用戶信息文件使用JDOM解析該文件返回用戶信息配置模型對象將解析到的信息填充到用戶信息配置模型中去開始結(jié)束讀取本地XML用戶信息文件使用JDOM解析該文件保存更改到本地XML文件使用傳入的用戶信息配置模型對象相應(yīng)字段設(shè)置解析到的文件字段47獲取用戶信息流程48更改用戶信息流程圖PROTECTEDUSERGETUSERPROFILEUSERUSERNEWUSERSAXBUILDERBUILDERNEWSAXBUILDERTRYDOCUMENTDOCBUILDERBUILDUSERFILEELEMENTROOTELEMENTDOCGETROOTELEMENT西安建筑科技大學(xué)課程設(shè)計(論文)第16頁共43頁STRINGUSERNAMEROOTELEMENTGETCHILDUSERNAMEGETTEXTUSERSETUSERNAMEUSERNAMESTRINGPASSWORDROOTELEMENTGETCHILDPWDGETTEXTUSERSETPASSWORDPASSWORDBOOLEANLOGINNEWBOOLEANROOTELEMENTGETCHILDLOGINGETTEXTUSERSETLOGINLOGINCATCHEXCEPTIONEEPRINTSTACKTRACERETURNUSERPROTECTEDVOIDSETUSERPROFILEUSERUSERSAXBUILDERBUILDERNEWSAXBUILDERTRYDOCUMENTDOCBUILDERBUILDUSERFILEELEMENTROOTELEMENTDOCGETROOTELEMENTROOTELEMENTGETCHILDUSERNAMESETTEXTUSERGETUSERNAMEROOTELEMENTGETCHILDPWDSETTEXTUSERGETPASSWORDROOTELEMENTGETCHILDLOGINSETTEXTSTRINGVALUEOFUSERISLOGINXMLOUTPUTTERFMTNEWXMLOUTPUTTERFILEWRITERWRITERNEWFILEWRITERUSERFILEORGJDOMOUTPUTFORMATFORGJDOMOUTPUTFORMATGETPRETTYFORMATFMTSETFORMATFFMTOUTPUTDOC,WRITERWRITERCLOSECATCHEXCEPTIONEEPRINTSTACKTRACE48閱讀郵件流程郵件閱讀是郵件系統(tǒng)的最基本功能之一,在本設(shè)計中,郵件閱讀流程如圖49所示,其代碼如下STRINGISREADSTRINGVALUEOFARRAYGETINDEX1ISREADSTRINGNAMEARRAYGETINDEX1GETNAMEINTLENGTHNAMELENGTHINTSINDEXNAMEINDEXOF“_“USERNAMESUBSTRING0,SINDEXSTRINGRESTNAMESUBSTRINGSINDEX1,LENGTHINTINDEX2RESTINDEXOF“_“TOPICRESTSUBSTRING0,INDEX2FILEFILENEWFILENAME“TXT“西安建筑科技大學(xué)課程設(shè)計(論文)第17頁共43頁INNEWDATAINPUTSTREAMNEWBUFFEREDINPUTSTREAMNEWFILEINPUTSTREAMFILESTRINGBUFFERSBNEWSTRINGBUFFERSTRINGSTRINGNULLWHILESTRINGINREADLINENULLSBAPPENDSTRINGSTRINGSBTOSTRINGBASEMAINSETUNREADMAILUSERSHOWCONTENTSTRING開始結(jié)束讀取本地XML未讀郵件信息文件使用JDOM遍歷解析該文件遍歷列表獲取模型數(shù)據(jù),并設(shè)置到相應(yīng)控件顯示將解析到的結(jié)果保存到未讀郵件模型中將郵件模型添加到一個列表圖49郵件閱讀流程西安建筑科技大學(xué)課程設(shè)計(論文)第18頁共43頁第5章系統(tǒng)功能測試51登陸界面及郵箱賬戶設(shè)置界面測試界面模塊主要使用JAVASWING技術(shù)完成,其中包括主界面,登陸界面,設(shè)置賬戶界面,閱讀郵件界面,發(fā)送郵件界面等幾部分。登陸選擇指定郵件用戶和密碼。在本系統(tǒng)中提供了一個用戶名和密碼均為ADMIN的默認(rèn)用戶進(jìn)行登錄。使用默認(rèn)用戶登錄后,用戶可以更改登錄賬戶。必須使用正確的用戶名和密碼才可以登錄,不然無法進(jìn)入客戶端。登錄界面的效果圖圖51登錄界面設(shè)置賬戶界面用來標(biāo)識對公網(wǎng)的客戶端身份,只有設(shè)置正確存在的公網(wǎng)賬戶才可以使用本客戶端對外發(fā)送郵件。設(shè)置賬戶界面效果圖圖52郵箱賬戶設(shè)置界面52主界面測試主界面是客戶端與用戶交互的直接體現(xiàn),它調(diào)用相應(yīng)的界面和方法響應(yīng)用戶的操作,主界面見圖53;西安建筑科技大學(xué)課程設(shè)計(論文)第19頁共43頁圖53主界面53發(fā)送界面與收件箱界面測試發(fā)送界面是發(fā)送郵件時的操作控制界面,主要有設(shè)置接收人,抄送,密送,郵件主題,郵件內(nèi)容等5部分組成,發(fā)送界面見圖54圖54發(fā)送郵件界面西安建筑科技大學(xué)課程設(shè)計(論文)第20頁共43頁收件箱界面是登陸客戶端時由郵箱配置方法將收到郵件信息設(shè)置在它下面,在主界面選擇它后,即可查看客戶端收到的郵件信息情況,收件箱界面見圖55;圖55收件箱界面54閱讀郵件界面測試閱讀郵件界面是根據(jù)在收件箱界面的列表,選擇一條未讀郵件后,進(jìn)行未讀郵件內(nèi)容的顯示,閱讀郵件界面見圖56;圖56閱讀郵件界面西安建筑科技大學(xué)課程設(shè)計(論文)第21頁共43頁第6章結(jié)論與展望61結(jié)論系統(tǒng)主要實施對于郵件系統(tǒng)中郵件及郵件夾的管理。系統(tǒng)主要實現(xiàn)了對于郵件的發(fā)送、接收、刪除、郵件夾的管理等功能。62展望系統(tǒng)開發(fā)是需要一個不斷完善的過程,通過不斷測試,檢測出更多問題,并不斷完善。然而由于時間的緣故,并不能進(jìn)行逐步測試,因此仍然有很多地方需要改進(jìn)。現(xiàn)在歸納如下有時候郵件太長,或者是表格、WORD文檔,一正文方式發(fā)送不太方便,這樣可以引用一個附件功能。及那個這些表格或WORD文檔以附件的形式上傳,然后發(fā)送。在擴充一下,提供可以發(fā)送多個郵件的功能。但本系統(tǒng)未實現(xiàn)此功能。西安建筑科技大學(xué)課程設(shè)計(論文)第22頁共43頁致謝感謝我的指導(dǎo)老師彭曉天老師,本次論文的每個細(xì)節(jié)和每個數(shù)據(jù),都離不開他的細(xì)心指導(dǎo)。無論在理論上還是在實踐中,彭老師都給了我很大的幫助,使我得到不少的提高這對于我以后的工作和學(xué)習(xí)都有一種巨大的幫助。另外,在系統(tǒng)開發(fā)過程中同學(xué)也給予我很大的幫助,幫助解決了不少的難點,使得系統(tǒng)能及時開發(fā)完成,這里一并表示感謝。在論文即將完成之際,我的心情無法平靜,從開始進(jìn)入課題到論文的順利完成,有許多可敬的師長、同學(xué)、朋友給了我無私的幫助,在這里請接受我誠摯的謝意西安建筑科技大學(xué)課程設(shè)計(論文)第23頁共43頁參考文獻(xiàn)1張堯?qū)W等編著,計算機網(wǎng)絡(luò)與INTERNET教程(第三版)北京清華大學(xué)出版社,20012COMPUTERNETWORKS,VERSIONPRENTICEHALLINTERNATIONAL,INC1998(計算機網(wǎng)絡(luò)第四版,清華大學(xué)出版社影印版,2001)。3INTERNETWORKINGWITHTCP/IP(VOL1,VOL2,VOL3)PRENTICEHALLINTERNATIONAL,INC1995(TCP/IP網(wǎng)絡(luò)互連技術(shù)卷1、卷2、卷3,清華大學(xué)出版社影印版,1998)。4謝希仁主編,計算機網(wǎng)絡(luò)第三版,北京電子工業(yè)出版社,2000。西安建筑科技大學(xué)課程設(shè)計(論文)第24頁共43頁附錄1、主界面主要代碼PUBLICCLASSMAINUIEXTENDSBASEMAINSUPPRESSWARNINGS“UNUSED“PRIVATESTATICSTRINGTITLEPRIVATEUSERUSERPRIVATEBOOLEANISFIRSTLOGINFALSEPUBLICSTATICJFRAMEJFRAMEPUBLICSTATICFINALSTRINGWELCOME_WORD01“歡迎使用郵件客戶端“,WELCOME_WORD02“作者黨西嬌“,WELCOME_WORD03“班級通信901“PUBLICSTATICFINALSTRINGNEW“寫信“,RECEIVED“收信“,RECBOX“收件箱“,DRAFT“草稿“,SET“設(shè)置“PUBLICSTATICFINALINTBUTTON_NUMBER20,BUTTON_WIDTH30,BUTTON_HEIGHT20,BUTTON_START_POINT0PUBLICSTATICINTDRAFT_EMAIL0PUBLICSTATICJBUTTONNEWBUTTON,RECBUTTON,RECBOXBUTTON,CONTACTBUTTON,UNREADBUTTON,RAFTBUTTON,SENDBUTTON,DELETEBUTTON,RABISHBOXBUTTON,SETBUTTONPUBLICSTATICJTABBEDPANETABPUBLICSTATICJPANELBUTTONPANEL,SENDPANELPUBLICCOLORCOLORSTYLENEWCOLORCOLORBLACK,COLORBLUE,COLORCYAN,COLORDARK_GRAY,COLORGRAY,COLORGREEN,COLORLIGHT_GRAY,COLORMAGENTA,COLORORANGE,COLORPINK,COLORYELLOW,COLORREDPUBLICJLABELSTART01,START02,START03PUBLICJPANELLABELPANELPUBLICSTATICFINALSTRINGDEFAULT_FONT“宋體“PUBLICSTATICINTUNREADNUMBERGETUNREADCOUNTERBASEMAINGETUNREADMAILNUMBERPUBLICSTATICINTDELETEDNUMBER1PRIVATESTATICBOOLEANFLAGFALSEPRIVATEJPANELTEMPPANELPUBLICMAINUISTRINGTITLETHISTITLETITLEPUBLICVOIDSTARTINITBUTTONINITTABLE西安建筑科技大學(xué)課程設(shè)計(論文)第25頁共43頁USERGETUSERPROFILEISFIRSTLOGINUSERISLOGINSHOWISFIRSTLOGINPUBLICVOIDINITBUTTON/TODOAUTOGENERATEDMETHODSTUBNEWBUTTONNEWJBUTTONNEWNEWBUTTONSETCONTENTAREAFILLEDFALSENEWBUTTONSETBACKGROUNDCOLORWHITENEWBUTTONSETFOREGROUNDCOLORBLUENEWBUTTONADDACTIONLISTENERLISTENERNEWBUTTONSETBOUNDSBUTTON_START_POINT,BUTTON_START_POINT,BUTTON_WIDTH,BUTTON_HEIGHTBUTTONPANELNEWJPANELBUTTONPANELSETBACKGROUNDCOLORWHITEBUTTONPANELSETLAYOUTNEWGRIDLAYOUTBUTTON_NUMBER,0,0,0BUTTONPANELADDNEWBUTTONBUTTONPANELADDRECBUTTONBUTTONPANELADDRECBOXBUTTONBUTTONPANELADDDRAFTBUTTONBUTTONPANELADDSETBUTTONPUBLICVOIDINITTABLE/TODOAUTOGENERATEDMETHODSTUBTABNEWJTABBEDPANEJTABBEDPANETOPTABSETBACKGROUNDCOLORWHITETABADDMOUSELISTENERMLISTENERSTART01NEWJLABELSTART01SETBACKGROUNDCOLORWHITESTART01SETTEXTWELCOME_WORD01START01SETHORIZONTALALIGNMENTSWINGCONSTANTSCENTERLABELPANELNEWJPANELLABELPANELSETBACKGROUNDCOLORWHITELABELPANELSETLAYOUTNEWGRIDLAYOUT3,0,4,4LABELPANELADDSTART01LABELPANELADDSTART02LABELPANELADDSTART03TABADD“主頁“,LABELPANELNEWTHREADNEWCHANGECOLORSTARTSUPPRESSWARNINGS“STATICACCESS“西安建筑科技大學(xué)課程設(shè)計(論文)第26頁共43頁PUBLICVOIDSHOWBOOLEANISFIRSTLOGINJFRAMENEWJFRAMEJFRAMESETBOUNDS0,0,SCREEN_WIDTH3/4,SCREEN_HEIGHT3/5JFRAMESETBACKGROUNDCOLORWHITEJFRAMEADDBUTTONPANEL,NEWBORDERLAYOUTWESTJFRAMEADDTAB,NEWBORDERLAYOUTCENTERJFRAMESETVISIBLETRUEIFISFIRSTLOGINJFRAMESETFOCUSABLEFALSEJFRAMESETENABLEDFALSENEWLOGIN_UINEWMAINUIJFRAMESETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSERECEIVEEMAILISRUNNINGFALSEPRIVATEACTIONLISTENERLISTENERNEWACTIONLISTENEROVERRIDEPUBLICVOIDACTIONPERFORMEDACTIONEVENTE/TODOAUTOGENERATEDMETHODSTUBIFEGETACTIONCOMMANDEQUALSNEWSENDUISENDUINEWSENDUINEWMAINUISENDPANELSENDUIINITSENDUITABADDNEW,SENDPANELTABSETSELECTEDCOMPONENTTEMPPANELELSEIFEGETACTIONCOMMANDEQUALSSETNEWSETUINEWMAINUIELSEIFEGETACTIONCOMMANDCONTAINSRECBOX|EGETACTIONCOMMANDEQUALSRECEIVEDIFFLAGRECEIVEDUIRECEIVEUINEWRECEIVEDUINEWMAINUITEMPPANELRECEIVEUIINITRECVUITABADDRECBOX,TEMPPANELTABSETSELECTEDCOMPONENTTEMPPANELFLAGTRUEELSETABSETSELECTEDCOMPONENTTEMPPANELPRIVATEMOUSELISTENERMLISTENERNEWMOUSELISTENERPUBLICVOIDMOUSECLICKEDMOUSEEVENTE/TODOAUTOGENERATEDMETHODSTUBIFEGETCLICKCOUNT2IFTABGETSELECTEDCOMPONENTLABELPANELIFTABGETSELECTEDCOMPONENTEQUALSTEMPPANELFLAGFALSETABREMOVETABGETSELECTEDCOMPONENT西安建筑科技大學(xué)課程設(shè)計(論文)第27頁共43頁PUBLICSTATICVOIDMAINSTRINGARGS/TODOAUTOGENERATEDMETHODSTUBNEWTHREADNEWRECEIVEEMAILSTARTNEWMAINUI“E_MAINCLIENT“STARTCLASSCHANGECOLORIMPLEMENTSRUNNABLEPUBLICVOIDRUNINTCOLORLENGTHCOLORSTYLELENGTHFORINTJ0JGETUNREADMAILNUMBERARRAYLISTARRAYNEWARRAYLISTINTINDEX0SAXBUILDERBUILDERNEWSAXBUILDERTRY/類似GETUSERPROFILECATCHEXCEPTIONEPROTECTEDSTATICINTGETUNREADCOUNTERARRAYLISTARRAYLISTINTRESULT0INTLENGTHARRAYLISTSIZESYSTEMOUTPRINTLNLENGTHFORINTJ0J2SBAPPENDBASE64ENCODECHARSTEMP01SBAPPENDBASE64ENCODECHARSTEMP01SBAPPENDBASE64ENCODECHARSTEMP02SBAPPENDBASE64ENCODECHARSTEMP01西安建筑科技大學(xué)課程設(shè)計(論文)第32頁共43頁SBAPPENDBASE64ENCODECHARSTEMP02SBAPPENDBASE64ENCODECHARSTEMP03RETURNSBTOSTRING5、發(fā)送郵件方法PACKAGECOMDANGXIJIAOEMAILMETHODPUBLICCLASSSENDPROCESSPRIVATESTATICFINALSTRINGSUCCESS“SUCCESS“,FAILED“FAILED“,PREFIX“SMTP“PRIVATESTATICFINALINTPORT25PRIVATESMTPSMTPPRIVATEEMAIL_MESSAGEMESSAGEPRIVATESTRINGSENDRESULTNULL,HOSTNAME,USERNAMEPROTECTEDSOCKETSOCKETNULLPUBLICSENDPROCESSSTRINGUSERNAME,SMTPSMTP,EMAIL_MESSAGEMESSAGE,STRINGHOSTNAMETHISUSERNAMEUSERNAMETHISSMTPSMTPTHISMESSAGEMESSAGETHISHOSTNAMEHOSTNAMEPUBLICVOIDSTART_SENDSTRINGCHOICEGETEMAILNAMEINFOGETHOSTNAMEUSERNAMEIFCHOICEEQUALS“MYDOMAINCOM“SEND_INNER_EMAILELSESEND_OUTTER_EMAILPRIVATEVOIDSEND_INNER_EMAIL/TODOAUTOGENERATEDMETHODSTUBTRYSTRINGDESTIPGETEMAILNAMEINFOGETUSERNAMEUSERNAMEREPLACE“_“,“SOCKETNEWSOCKETDESTIP,PORTBUFFEREDREADERBRGETREADERSOCKETPRINTWRITERPWGETWRITERSOCKETSENDANDRECEIVENULL,BR,PWIFSENDRESULTEQUALSFAILED西安建筑科技大學(xué)課程設(shè)計(論文)第33頁共43頁JOPTIONPANESHOWMESSAGEDIALOGMAINUIJFRAME,“連接郵件服務(wù)器失敗“,NULL,0RETURNSENDANDRECEIVESMTPGETMAIL,BR,PWIFSENDRESULTEQUALSFAILEDRETURNSENDANDRECEIVESMTPGETREPT,BR,PWIFSENDRESULTEQUALSFAILEDRETURNSENDANDRECEIVESMTPGETDATA,BR,PWIFSENDRESULTEQUALSFAILEDRETURNSENDANDRECEIVEMESSAGEGETFROM“RN“MESSAGEGETTO“RN“MESSAGEGETDATA,BR,PWIFSENDRESULTEQUALSFAILEDJOPTIONPANESHOWMESSAGEDIALOGMAINUIJFRAME,“郵件發(fā)送失敗“,NULL,0RETURNSENDANDRECEIVESMTPGETQUIT,BR,PWIFSENDRESULTEQUALSFAILEDJOPTIONPANESHOWMESSAGEDIALOGMAINUIJFRAME,“郵件發(fā)送成功“,NULL,0RETURNCATCHUNKNOWNHOSTEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACECATCHIOEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACEFINALLYTRYIFSOCKETNULLSOCKETCLOSECATCHIOEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACE西安建筑科技大學(xué)課程設(shè)計(論文)第34頁共43頁PRIVATEVOIDSEND_OUTTER_EMAILTRYSOCKETNEWSOCKETPREFIXHOSTNAME,PORTBUFFEREDREADERBRGETREADERSOCKETPRINTWRITERPWGETWRITERSOCKETSENDANDRECEIVENULL,BR,PWIFSENDRESULTEQUALSFAILEDJOPTIONPANESHOWMESSAGEDIALOGMAINUIJFRAME,“連接郵件服務(wù)器失敗“,NULL,0RETURNSENDANDRECEIVESMTPGETHELO,BR,PWIFSENDRESULTEQUALSFAILEDRETURNSENDANDRECEIVESMTPGETAUTH,BR,PWIFSENDRESULTEQUALSFAILEDRETURNSENDANDRECEIVESMTPGETUSERNAME,BR,PWIFSENDRESULTEQUALSFAILEDRETURNSENDANDRECEIVESMTPGETPASSWORD,BR,PWIFSENDRESULTEQUALSFAILEDJOPTIONPANESHOWMESSAGEDIALOGMAINUIJFRAME,“用戶名或密碼錯誤“,NULL,0RETURNSENDANDRECEIVESMTPGETMAIL,BR,PW/以下同SEND_INNER_EMAILPRIVATEVOIDSENDANDRECEIVESTRINGSTRING,BUFFEREDREADERBR,PRINTWRITERPWTHROWSIOEXCEPTIONSTRINGBUFFERSTRINGBUFFERNEWSTRINGBUFFERSTRINGRESPONSENULLIFSTRINGNULLPWPRINTLNSTRINGWHILERESPONSEB
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 業(yè)主委員會行為規(guī)范制度
- 中醫(yī)師藥店備案制度規(guī)范
- 消防安全檔案管理制度
- 醫(yī)大一院陪護(hù)制度規(guī)范要求
- 企業(yè)登記制度及流程規(guī)范
- 酒吧門店員工制度規(guī)范要求
- 2024年翼城縣幼兒園教師招教考試備考題庫帶答案解析(必刷)
- 外企安全生產(chǎn)責(zé)任制度
- 菜鳥驛站安全生產(chǎn)制度
- 信訪考核制度
- 船舶年度檢修報告范文
- TSG ZF001-2006《安全閥安全技術(shù)監(jiān)察規(guī)程》
- GB/T 4706.19-2024家用和類似用途電器的安全第19部分:液體加熱器的特殊要求
- 氣體滅火拆除施工方案及流程
- DL-T+5220-2021-10kV及以下架空配電線路設(shè)計規(guī)范
- 視覺傳播概論(第2版)課件全套 任悅 第1-12章 視覺傳播概述- 視覺傳播中的倫理道德與法規(guī)
- 解分式方程50題八年級數(shù)學(xué)上冊
- GB/T 27866-2023鋼制管道和設(shè)備防止焊縫硫化物應(yīng)力開裂的硬度控制技術(shù)規(guī)范
- 部編版小學(xué)語文四年級下冊第一單元教材解讀課件
- 骨科常見病、多發(fā)病清單、疑難病種清單、核心手術(shù)操作技術(shù)清單
- 保單整理分享課件
評論
0/150
提交評論