基于javaMail電子郵件系統(tǒng)的設計_第1頁
基于javaMail電子郵件系統(tǒng)的設計_第2頁
基于javaMail電子郵件系統(tǒng)的設計_第3頁
基于javaMail電子郵件系統(tǒng)的設計_第4頁
基于javaMail電子郵件系統(tǒng)的設計_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計I報告題 目: 電子郵件系統(tǒng)設計 專 業(yè) 軟件工程 學 生 姓 名 * 班 級 學 號 * 指 導 教 師 * 指 導 單 位 計算機學院軟件工程系 日 期 2009.6.102008.6.22 1、 課題名稱電子郵件系統(tǒng)設計2、 課題內容設計一個電子郵件系統(tǒng),包括客戶端和服務器端的設計、郵件處理過程建模和具體功能的實現(xiàn)等。3、 系統(tǒng)分析電子郵件(e-mail)是因特網(wǎng)上使用得最多的和最受用戶歡迎的一種應用。電子郵件把郵件發(fā)送到 ISP 的郵件服務器,并放在其中的收信人郵箱中,收信人可隨時上網(wǎng)到 ISP 的郵件服務器進行讀取。電子郵件不僅使用方便,而且還具有傳遞迅速和費用低廉的優(yōu)點?,F(xiàn)

2、在電子郵件不僅可傳送文字信息,而且還可附上聲音和圖像。本系統(tǒng)分析中給出了電子郵件服務器和電子郵件客戶端的簡介,同時給出了本次試驗中客戶端的主要功能和總體框圖。郵件服務器按照提供的服務類型,可以分為發(fā)送郵件服務器(簡稱發(fā)送服務器)和接收郵件服務器(簡稱接收服務器)。發(fā)送郵件服務器使用郵件發(fā)送協(xié)議,現(xiàn)在常用的是SMTP,所以通常發(fā)送郵件服務器也稱為SMTP服務器;接收郵件服務器使用接收郵件協(xié)議,常用的有POP3協(xié)議和IMAP協(xié)議,所以通常接收郵件服務器也稱為POP3服務器或IMAP服務器。SMTP(Simple Mail Transfer Protocol),即簡單郵件傳輸協(xié)議,是Internet

3、傳送E-mail的基本協(xié)議,也是TCP/IP協(xié)議組的成員。SMTP協(xié)議解決郵件系統(tǒng)如何通過一條鏈路,把郵件從一臺機器傳送到另一臺機器上的問題。SMTP協(xié)議的特點是具有良好的可伸縮性,這也是它成功的關鍵。它既適用于廣域網(wǎng),也適用于局域網(wǎng)。SMTP協(xié)議由于非常簡單,使得它得到了廣泛的運用,在Internet上能夠發(fā)送郵件的服務器幾乎都支持SMTP協(xié)議。POP3(Post Office Protocol 3),即郵局協(xié)議第3版,是 Internet接收郵件的基本協(xié)議,也是TCP/IP協(xié)議組的成員。RFC1939描述了POP3協(xié)議,網(wǎng)址為“/rfc/rfc1939.

4、txt”。POP3既允許接收服務器向郵件用戶發(fā)送郵件,也可以接收來自SMTP服務器的郵件。郵件客戶端軟件會與POP3服務器交互,下載由POP3服務器接收到的郵件?;赑OP3協(xié)議的郵件系統(tǒng)能提供快速、經(jīng)濟和方便的郵件接收服務,深受用戶的青睞。IMAP(Internet Message Access Protocol),即互聯(lián)網(wǎng)消息訪問協(xié)議,是一種功能比POP3更強大的新的接收郵件協(xié)議。目前最新的IMAP協(xié)議版本為IMAP4,RFC2060描述了IMAP4,網(wǎng)址為“/rfc/rfc2060.txt”。IMAP4與POP3協(xié)議一樣提供了方便的下載郵件服務,允許用

5、戶在脫機狀態(tài)下閱讀已經(jīng)下載到本地硬盤的郵件。但IMAP4的功能遠遠不只這些,它還具有以下功能: 摘要瀏覽郵件的功能。選擇性下載附件的功能。鼓勵用戶把郵件一直存儲在郵件服務器上。允許用戶把遠程郵件服務器上的郵箱作為信息存儲工具。MIME(Multipurpose Internet Mail Extensions,多用途Internet郵件擴充標準)不是郵件傳輸協(xié)議,而是對郵件格式所作的規(guī)范。RFC2045、RFC2046和RFC2047對MIME作了描述。MIME是對RFC822的擴充,RFC822規(guī)定了內容只包括采用ASCII編碼的純文本的郵件的格式,而MIME允許在郵件中包含附件。整個電子郵

6、件系統(tǒng)的工作過程及一些涉及到的協(xié)議如下圖所示:電子郵件系統(tǒng)包含:電子郵件服務器端和電子郵件客戶端。SUN公司制定了JavaMail API,它封裝了按照各種郵件通信協(xié)議,如IMAP、POP3和SMTP,與郵件服務器通信的細節(jié),為Java應用程序提供了收發(fā)電子郵件的公共接口,參見下圖:JavaMail API主要位于javax.mail包和ernet中,下圖為其中主要類的類框圖。1. javax.mail.Session類:表示郵件會話,是JavaMail API的最高層入口類。2javax.mail.Store類:表示接收郵件服務器上的注冊用戶的存儲空間,通過Sto

7、re類的getFolder()方法,可以訪問用戶的特定郵件夾。 3. javax.mail.Folder類:代表郵件夾。4. javax.mail.Message類:代表電子郵件。5. javax.mail.Address類:代表郵件地址。6. javax.mail.Transport類:根據(jù)指定的郵件發(fā)送協(xié)議(通常是 SMTP),通過指定的郵件發(fā)送服務器來發(fā)送郵件。電子郵件服務器的最簡模型如下圖:電子郵件服務器的結構一般如下圖所示:電子郵件服務器還能在本機和客戶端進行連接使用(即主機上的SMTP服務器還可能與其他SMTP服務器會話以發(fā)送郵件)如下圖:按照MIME規(guī)范,電子郵件包括郵件頭和正文

8、兩部分。郵件頭中包括日期、發(fā)送者地址、接收者地址和主題等信息。正文部分可以包括普通文本內容,還可以包括一個或多個附件。javax.mail.Message抽象類表示郵件,它的具體子類為javax.mail.MimeMessage類,它提供了讀取和設置郵件中各個部分的getXXX()和setXXX()方法:setSubject(String subject)方法設置郵件的主題。setHeader(String name, String value)方法設置郵件頭部的某一項。setContent(Object o, String type)方法設置郵件的正文。javax.mail.Address抽

9、象類表示郵件地址,它的最常用的子類是javax.mail.InternetAddress類。InternetAddress類表示Internet網(wǎng)上通用的郵件地址,形式為,或者“Admin”。電子郵件客戶端是安裝在個人電腦上面的一種軟件,用于和電子郵件服務器端的連接?;旧纤械目蛻舳艘话愣加幸韵滤膫€基本功能: a.通過POP3收取用戶各種郵箱的郵件。由于考慮到POPular服務器地址的不同,但又可以接收不同郵箱地址的郵件,所以增加了這個功能。 b.在線閱讀郵件,這個功能是電子郵件系統(tǒng)必備的功能。 c.接收保存郵件,用戶可以再閱讀郵件之后,將其保存起來,在需要

10、的時候再次閱讀。 d.在線處理郵件,如果收到一些垃圾郵件或者不是很重要的郵件,那么用戶可以將它們放到垃圾箱或者然后在去垃圾箱中將它徹底刪除,這是最好的辦法。這個時候就要引入在線處理郵件功能,這個功能能夠刪除郵件。 e.發(fā)送附件。有時候郵件太長,或者是表格、Word文檔,一正文方式發(fā)送不太方便,這樣可以引用一個附件功能。及那個這些表格或Word文檔以附件的形式上傳,讓后發(fā)送。在擴充一下,提供可以發(fā)送多個郵件的功能。(本功能為擴展功能,本系統(tǒng)并未實現(xiàn))。 f.接收附件,相對于發(fā)送附件而言,接收附件的功能必不可少。不然不能閱讀郵件的內容。同樣,應該擴充可以接受多個附件的功能。 g.SMTP驗證,當前

11、大部分的SMTP服務器,在用戶發(fā)送郵件的時候,都需要進行用戶名和密碼的驗證。 h.郵件文件夾管理,該功能提供了用戶可以再除了了有收件箱等必須得文件夾時,可以根據(jù)自己的需要創(chuàng)建新的文件夾用于更好大的管理自己收到的郵件,還可以重命名和刪除用戶自己創(chuàng)建的文件夾。 i.回復郵件,該功能是電子郵件系統(tǒng)必備的功能 下面列出了本系統(tǒng)的總體功能:總之,由上面的電子郵件服務器和客戶端的分析可知該電子郵件系統(tǒng)收發(fā)郵件的整個過程和圖示如下:(1) 發(fā)信人調用用戶代理來編輯要發(fā)送的郵件。用戶代理用 SMTP 把郵件傳送給發(fā)送端郵件服務器。(2) 發(fā)送端郵件服務器將郵件放入郵件緩存隊列中,等待發(fā)送。(3) 運行在發(fā)送端

12、郵件服務器的 SMTP 客戶進程,發(fā)現(xiàn)在郵件緩存中有待發(fā)送的郵件,就向運行在接收端郵件服務器的 SMTP 服務器進程發(fā)起 TCP 連接的建立。(4) TCP 連接建立后,SMTP 客戶進程開始向遠程的 SMTP 服務器進程發(fā)送郵件。當所有的待發(fā)送郵件發(fā)完了,SMTP 就關閉所建立的 TCP 連接。(5) 運行在接收端郵件服務器中的 SMTP 服務器進程收到郵件后,將郵件放入收信人的用戶郵箱中,等待收信人在方便時進行讀取。收信人在打算收信時,調用用戶代理,使用 POP3(或 IMAP)協(xié)議將自己的郵件從接收端郵件服務器的用戶郵箱中的取回(如果郵箱中有來信的話)。4、 系統(tǒng)設計本系統(tǒng)基于JavaM

13、ial API采用B/S設計結構。使用Apache Tomcat做為WEB服務器和JSP Servlet的容器。JDK中并不包含JavaMail API。為了開發(fā)JavaMail應用程序,需要從SUN公司的網(wǎng)站下載JavaMail API及其實現(xiàn)的類庫,該類庫由兩個JAR文件組成: mail.jar和activation.jar。JavaMail應用程序在初始化過程中需要執(zhí)行如下步驟。步驟(1)設置JavaMail屬性: Properties props = new Properties();props.put(tocol, smtp);props.put(

14、tocol, imap);props.put(mail.smtp.class, com.sun.mail.smtp.SMTPTransport);props.put(mail.imap.class, com.sun.mail.imap.IMAPStore);props.put(mail.smtp.host, hostname); 以上代碼設置了如下JavaMail屬性:tocol:指定郵件發(fā)送協(xié)議。tocol:指定郵件接收協(xié)議。mail.smtp.class:指定支持SMTP協(xié)議的Transport具體

15、類,允許由第三方提供。mail.imap.class:指定支持IMAP協(xié)議的Store具體類,允許由第三方提供。mail.smtp.host:指定采用SMTP協(xié)議的郵件發(fā)送服務器的IP地址或主機名步驟(2)調用javax.mail.Session類的靜態(tài)方法Session.getDefaultInstance()獲得Session實例,該方法根據(jù)已經(jīng)配置的JavaMail屬性來創(chuàng)建Session實例:Session mailsession = Session.getDefaultInstance(props);步驟(3)調用Session的getStore(String protocol)方法

16、來獲得Store對象,參數(shù)protocol指定接收郵件協(xié)議:Store store = mailsession.getStore(imap);步驟(1)把mail.imap.class屬性設為com.sun.mail.imap.IMAPStore,因此以上getStore()方法返回com.sun.mail.imap.IMAPStore類的實例。步驟(4)調用Store對象的connect()方法連接到接收郵件服務器。調用connect()方法時,應該指定接收郵件服務器的主機名或IP地址、用戶名和口令。 store.connect(hostname,username, password);獲得

17、了Store對象后,就可以通過它來訪問郵件服務器上的特定郵件用戶了。通常會對郵件用戶執(zhí)行以下操作。操作(1)創(chuàng)建并發(fā)送郵件:/創(chuàng)建郵件msg = new MimeMessage(mailsession);InternetAddress toAddrs =InternetAddress.parse(, false);/設置郵件接收者 msg.setRecipients(Message.RecipientType.TO, toAddrs);/設置郵件的主題msg.setSubject(hello);/設置郵件的發(fā)送者msg.setFrom(new Internet

18、Address();/設置郵件的正文msg.setText(How are you);/發(fā)送郵件Transport.send(msg);Transport的靜態(tài)方法send(Message)負責發(fā)送郵件服務器,郵件發(fā)送協(xié)議由tocol屬性指定,郵件發(fā)送服務器由mail.smtp.host屬性指定。操作(2)打開inbox郵件夾收取郵件:/獲得名為“inbox”的郵件夾Folder folder=store.getFolder(inbox);/打開郵件夾folder.open(Folder.READ_ONLY);/獲得郵件夾中

19、的郵件數(shù)目System.out.println(You have +folder.getMessageCount()+ messages in inbox.);/獲得郵件夾中的未讀郵件數(shù)目System.out.println(You have +folder.getUnreadMessageCount()+ unread messages in inbox.);在IMAP協(xié)議中,inbox郵件夾是郵件用戶的保留郵件夾,用戶不允許刪除該郵件夾,郵件服務器把所有接收到的新郵件都存在該郵件夾中。操作(3)從郵件夾中讀取郵件:/從郵件夾中讀取第一封郵件Message msg=folder.getMes

20、sage(1);System.out.println(-the first message in inbox-);/獲得郵件的發(fā)送者、主題和正文System.out.println(From:+msg.getFrom()0);System.out.println(Subject:+msg.getSubject();System.out.println(Text:+msg.getText();系統(tǒng)設計中,給出了本次試驗的UML建模和系統(tǒng)各個模塊的劃分。一、UML建模1. 本系統(tǒng)的用例圖:圖中User是本系統(tǒng)的總用戶,Sender和Receiver分別為發(fā)送郵件者和接收郵件者是從User中泛化出來

21、的。Upload accessory表示為上傳附件用例;Sending mail表示為發(fā)送郵件用例;Longin表示為登錄用例;Receiving mail表示為接收郵件用例;Saving mail表示為保存郵件用例;Saving accessory表示為保存附件用例;Folder表示為管理郵件文件夾用例;Create new folder表示為創(chuàng)建新的郵件文件夾用例;Rename folder表示為重命名創(chuàng)建的郵件文件夾用例;Delete folder表示為刪除創(chuàng)建的郵件文件夾;Deleting mail表示為刪除用戶收到的郵件用例。2. 本系統(tǒng)的時序圖和對應的協(xié)作圖:(1) 用戶發(fā)送郵件的

22、時序圖:從上圖中可以看出,首先用戶得登錄系統(tǒng),在登錄系統(tǒng)時還可以選擇登入服務器。用戶正常登錄系統(tǒng)后,系統(tǒng)會將用戶的ID保存在session變量中,并傳遞給發(fā)送和回復郵件模塊。用戶打開發(fā)送郵件界面就可以發(fā)送郵件了。界面提示輸入相關郵件信息,按提示輸入收件人郵件地址、主題和內容等信息后,單擊“發(fā)送”按鈕就可以發(fā)送了。有時候需要發(fā)送附件,單擊“添加附件”命令選擇需要添加的文件就可以了。最后提示發(fā)送成功。(2) 用戶接收郵件的時序圖:從上圖中可以看出,用戶首先還是先登錄郵件系統(tǒng),然后系統(tǒng)將所有提交用戶的ID保存到session變量中,并傳遞給接收郵件模板。該界面列出了所有的郵件,用戶可以打開某個郵件閱

23、讀。有時候郵件是以附件的形式發(fā)送的,這樣用戶在接收郵件是就需要先下載附件,然后保存。(3) 用戶發(fā)送郵件的協(xié)作圖:這是與上面用戶發(fā)送郵件的時序圖對應的協(xié)作圖。(4) 用戶接收郵件的協(xié)作圖:這是與上面用戶接收郵件的時序圖對應的協(xié)作圖。3. 本系統(tǒng)的總體分析模型(類圖):該類圖中包含了兩個類:PMessage和MailUserData。其中PMessage類對Message類的重新封裝,提供更方便的讀取郵件信息的方法。例如,在Message類中讀取郵件地址的方法,如getTo()方法返回Address類型,如果要把它顯示到網(wǎng)頁上,必須把Address數(shù)組轉化為對應的字符串。PMessage的構造方

24、法PMessage對Message數(shù)據(jù)重新封裝。JSP網(wǎng)頁調用PMessage的getTo方法可以直接獲得字符串類型的地址。MailUserData類用來存放用戶的相關信息,還有對郵件文件夾操作的一些方法的定義,還有郵件管理的一些操作的定義,例如:發(fā)送郵件,刪除郵件等。4. 本系統(tǒng)的活動圖: a.用戶接收郵件的活動圖,在接收郵件是可以分兩種方式,一種是文本形式,另一種是附件形式。接收郵件后,用戶可以并列做3件事,即保存郵件、刪除郵件和將郵件放入垃圾箱。至此,用戶接收郵件的活動完成。b.用戶發(fā)送郵件的活動圖,在發(fā)送郵件的活動中,還是一樣,用戶首先必須登錄郵件系統(tǒng),這樣,以后的操作才可以進行。發(fā)送

25、的主要活動就是發(fā)送郵件一個,它以兩種形式發(fā)送的。c.用戶管理郵件文件夾的活動圖,用戶可以根據(jù)自己的需要新建郵件文件夾、重新命名創(chuàng)建的文件夾和刪除創(chuàng)建的文件夾。5. 本系統(tǒng)的組件圖:二、系統(tǒng)模塊的劃分按照本系統(tǒng)的總體功能劃分,可以將這個電子郵件系統(tǒng)分成5大模塊,首先是登錄模塊,作為驗證需要;其次是接收郵件和附件模塊,該模塊負責郵件的接收,有的是以附件形式接收的,再次是發(fā)送和回復模塊,該模塊負責該對方發(fā)送郵件,有的還是以附件形式發(fā)送的;接著是郵件處理模塊,該模塊負責郵件的閱讀、保存和刪除等操作;然后是郵件文件夾的管理,該操作負責郵件文件夾的新建、重命名和刪除等操作。下面累出了本系統(tǒng)的模塊體系,如圖

26、:1 登錄模塊登錄模塊主要有l(wèi)ogin.jsp完成,其中包括下圖中的幾部分。(1) 選擇登錄服務器,本系統(tǒng)采用了MerakMailSErvler公司提供的Mail服務器使用版本。(2) 選擇指定郵件地址和密碼。在本系統(tǒng)中有所提供的Mail服務器創(chuàng)建了2個賬戶進行登錄。必須選用正確的郵件地址和密碼才可以登錄,不然會報錯。登錄模塊的圖示:2.接收郵件和附件模塊接收郵件和附件模塊主要由showmessage.jsp文件完成,包括下圖中的幾個部分。(1) 接收郵件。一個郵件系統(tǒng)最基本的功能就是能夠接受對方發(fā)送的郵件。(2) 保存附件。如果對方是以附件的形式發(fā)送郵件給用戶,那么用戶在接收郵件時,必須先下

27、載郵件,將其保存到本地機之后,才能閱讀。接收郵件和附件模塊的圖示:3.發(fā)送和回復郵件模塊 發(fā)送和回復郵件模塊主要由compose.jsp文件完成,包括圖中的幾個部分。(1) 編寫新郵件。該部分也是電子郵件系統(tǒng)中最基本的功能。(2) 上傳附件。在編寫郵件時,郵件內容可以以附件的形式發(fā)送,這樣就需要先將附件上傳到服務器,然后在發(fā)送給對方。 發(fā)送和回復郵件模塊的圖示:4.郵件處理模塊郵件處理模塊主要由listonefoldr.jsp文件完成,包括圖中的幾個部分。(1) 顯示郵件列表。在登錄后的首頁中就以分頁顯示的形式列出了所有的郵件,便于管理。(2) 刪除選中郵件。在選中刪除的郵件后,可以單擊該命令

28、刪除郵件。(3) 顯示錯誤信息。在出現(xiàn)一些登錄錯誤,刪除錯誤,下載錯誤是,將顯示不同的錯誤信息提示用戶。郵件處理模塊的圖示:5.郵件文件夾管理模塊郵件文件夾管理模塊主要是由listallfolders.jsp文件完成,包括圖中的幾個部分。(1) 創(chuàng)建新的郵件文件夾。用戶可以根據(jù)自己的需要創(chuàng)建新的郵件文件夾,便于管理用戶的郵件。(2) 重命名郵件文件夾。用戶可以重新命名自己創(chuàng)建的郵件文件夾。(3) 刪除郵件文件夾。用戶可以刪除自己創(chuàng)建的郵件文件夾。郵件文件夾管理模塊的圖示:5、 系統(tǒng)實現(xiàn)1 服務器的安裝和配置1.在做本次系統(tǒng)之前,必須配置JSP的服務器和電子郵件的服務器。(1)JSP的服務器,主

29、要使用的是Tomcat,同時在安裝Tomcat服務器之前,必需已經(jīng)安裝了SUN公司的JDK,在安裝Tomcat的時候主要是注意電腦環(huán)境變量的更改。安裝完成后,只要在瀏覽器中輸入http:/localhost:8080/看是否能打開Tomcat的網(wǎng)頁,如果能,則表示安裝成功,8080端口是Tomcat的默認端口,如果電腦上有服務已經(jīng)把端口占用了,可以把占用該端口的服務關掉,如果該服務關不掉或者比較重要,可以再Tomcat的安裝目錄中找到server.xml文件,將其中port=8080改成沒有被占用的端口號。(2)電子郵件服務器的配置:在本系統(tǒng)中我們采用了MerakMailServler公司的M

30、ail服務器,安裝完成后,在配置中輸入本次實驗所需要的域名和用戶等信息。然后保存,配置完成。2 客戶端的實現(xiàn)給出本系統(tǒng)中包含的兩個類:由于代碼比較多,所以這里只給出了核心代碼。首先要加入一個中文字符串處理函數(shù)用于是郵件能發(fā)送中文:public String codeToString(String str)/處理中文字符串的函數(shù) String s=str; try byte tempB=s.getBytes(ISO-8859-1); s=new String(tempB); return s; catch(Exception e) return s; 1. PMessage類重新封裝了Messa

31、ge類。(1) 重新封裝Message類獲得郵件的時間、主題、大小、內容還有地址等; public PMessage(Message msg)throws Exception if(msg!=null) SimpleDateFormat df = new SimpleDateFormat(yy.MM.dd at HH:mm:ss ); trydate=df.format(msg.getSentDate()!=null) ? msg.getSentDate() : msg.getReceivedDate(); catch(Exception e)date=new Date().toString(

32、); subject=msg.getSubject(); size=msg.getSize(); Object content=; try content=msg.getContent(); catch(Exception e) if(msg.isMimeType(text/plain) & content!=null) text=(String)content; from=assembleAddress(msg.getFrom(); to=assembleAddress(msg.getRecipients(Message.RecipientType.TO); cc=assembleAddre

33、ss(msg.getRecipients(Message.RecipientType.CC); bcc=assembleAddress(msg.getRecipients(Message.RecipientType.BCC); (2)構造函數(shù)PMessage(String to,String cc,String bcc,String subj,String text); public PMessage(String to,String cc,String bcc,String subj,String text) to.replace(;,); cc.replace(;,); bcc.repla

34、ce(;,); this.to=to; this.cc=cc; this.bcc=bcc; this.subject=subj; this.text=text; (3)將Address數(shù)組轉化為對應的字符串,用于在頁面上顯示; private String assembleAddress(Address addr) if(addr=null)return ; String addrString=; boolean tf = true; for (int i = 0; i addr.length; i+) addrString=addrString+(tf) ? : , ) + getDispl

35、ayAddress(addri); tf = false; return addrString; (4)返回一個適合msg頭的字符串。 private String getDisplayAddress(Address a) String pers = null; String addr = null; if (a instanceof InternetAddress & (pers = (InternetAddress)a).getPersonal() != null) addr = pers + +<+(InternetAddress)a).getAddress()+> else

36、 addr = a.toString(); return addr; ;2.MailUserData類 (1)刪除用戶自己創(chuàng)建的郵件夾,但不允許刪除Web應用指定的系統(tǒng)郵件夾; public void doDeleteFolder(String foldername )throws Exception /cant delete reserved folder if(foldername.equalsIgnoreCase(inbox)| foldername.equalsIgnoreCase(trash)| foldername.equalsIgnoreCase(draft)| folderna

37、me.equalsIgnoreCase(sendbox) throw new Exception(Cannt delete reserved folder); Folder folder=store.getFolder(foldername); if(!folder.exists()throw new Exception(This folder does not exists); if(folder.isOpen()folder.close(true); folder.delete(true); (2)修改用戶自己創(chuàng)建的郵件夾的名字,但不允許修改Web應用指定的系統(tǒng)郵件夾得名字; public

38、 void doRenameFolder(String fromname,String toname)throws Exception if(toname=null | toname.equals() throw new Exception(You do not input new folder name when renaming folder); /cant rename reserved folder if(fromname.equalsIgnoreCase(inbox)| fromname.equalsIgnoreCase(trash)| fromname.equalsIgnoreCa

39、se(draft)| fromname.equalsIgnoreCase(sendbox)| toname.equalsIgnoreCase(inbox)| toname.equalsIgnoreCase(trash)| toname.equalsIgnoreCase(draft)| toname.equalsIgnoreCase(sendbox) throw new Exception(Cannt rename reserved folder); Folder folderFrom=store.getFolder(fromname); Folder folderTo=store.getFol

40、der(toname); if(!folderFrom.exists()throw new Exception(This folder does not exists); if(folderFrom.isOpen()folderFrom.close(true); folderFrom.renameTo(folderTo); (3) 創(chuàng)建用戶自己的郵件夾; public void doCreateFolder(String foldername)throws Exception if(foldername=null | foldername.equals() throw new Exceptio

41、n(You do not input new folder name when creating folder); Folder folder=store.getFolder(foldername); if(folder.exists()throw new Exception(This folder already exists); folder.create(Folder.HOLDS_MESSAGES); (4) 把郵件添加到參數(shù)指定的郵件夾中; public void doAppendMessage(Message msg, Folder f)throws Exception Messag

42、e m=new Message1; m0=msg; f.appendMessages(m); (5) 根據(jù)參數(shù)指定的郵件信息,如標題,收發(fā)地址和郵件內容,來構建Message對象; public Message doAssembleMessage(String to,String cc,String bcc,String subj,String text)throws Exception Message msg = new MimeMessage(session); InternetAddress toAddrs = null, ccAddrs = null, bccAddrs=null; i

43、f (to != null) toAddrs = InternetAddress.parse(to, false); msg.setRecipients(Message.RecipientType.TO, toAddrs); else throw new MessagingException(No To address specified); if (cc != null) ccAddrs = InternetAddress.parse(cc, false); msg.setRecipients(Message.RecipientType.CC, ccAddrs); if (bcc != nu

44、ll) bccAddrs = InternetAddress.parse(bcc, false); msg.setRecipients(Message.RecipientType.BCC, bccAddrs); if (subj != null) msg.setSubject(subj); msg.setFrom(new InternetAddress(urlName.getUsername() + + urlName.getHost(); if (text != null) msg.setText(text); return msg; (6) 如果該郵件在Trash郵件夾中,就永久刪除該郵件

45、,否則把這封郵件移到Trash郵件夾中; public void doDeleteMessage(int arrayOpt,Folder f)throws Exception for(int i=0;iarrayOpt.length;i+) if(arrayOpti=0)continue; Message msg=f.getMessage(i+1); if(!f.getName().equals(Trash) Message m=new Message1; m0=msg; Folder Trash=store.getFolder(Trash); f.copyMessages(m,Trash); msg.setFlag(Flags.Flag.DELETED, true); else msg.setFlag(Flags.Flag.DELETED, true); f.expunge(); (7) 從用戶當前郵件夾中,把用戶當前訪問的郵件移到參數(shù)指定的郵件中; public void doMoveMessage(String toFolderName)throws Exception Folder folderFrom=cur

溫馨提示

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

最新文檔

評論

0/150

提交評論