




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、64成員負(fù)責(zé)模塊曹航(組長)郵件服務(wù)器管理模塊、郵件管理之郵件發(fā)送模塊,其他模塊有參與況應(yīng)濤修改用戶信息模塊,其他模塊有參與陳善瑜郵件管理模塊(重要)登錄模塊;注冊模塊網(wǎng)絡(luò)郵件系統(tǒng)電子郵件作為Internet最為廣泛的應(yīng)用之一,在人們的工作和生活中扮演著重要的角色,應(yīng)用的普及使電子郵件技術(shù)有了飛速的發(fā)展。網(wǎng)絡(luò)電子郵件系統(tǒng)在當(dāng)今的互聯(lián)網(wǎng)上比比皆是,不管是windows上的普及,還linux上的穩(wěn)定可靠和低廉;不管是分布式系統(tǒng),還是基于P2P,都離不開郵件系統(tǒng)的基本原理。郵件傳輸原理在Internet上將一段文本信息從一臺計(jì)算機(jī)傳送到另一臺計(jì)算機(jī)上,可通過兩種協(xié)議來完成,即 SMTP(Simple
2、 Mail Transfer Protocol,簡單郵件傳輸協(xié)議)和POP3(Post Office Protocol,郵局協(xié)議3)。SMTP是Internet協(xié)議集中的郵件標(biāo)準(zhǔn)。在Internet上能夠接收電子郵件的服務(wù)器都有SMTP。電子郵件在發(fā)送前,發(fā)件方的SMTP服務(wù)器與接收方的SMTP服務(wù)器聯(lián)系,確認(rèn)接收方準(zhǔn)備好了,則開始郵件傳遞;若沒有準(zhǔn)備好,發(fā)送服務(wù)器便會等待,并在一段時間后繼續(xù)與接收方郵件服務(wù)器聯(lián)系。這種方式在Internet上稱為“存儲轉(zhuǎn)發(fā)”方式。POP3可允許E-mail客戶向某一SMTP服務(wù)器發(fā)送電子郵件,另外,也可以接收來自SMTP服務(wù)器的電子郵件。換句話說,電子郵件在
3、客戶PC機(jī)與服務(wù)提供商之間的傳遞是通過P0P3來完成的,而電子郵件在 Internet上的傳遞則是通過SMTP來實(shí)現(xiàn)。如圖所示:發(fā)送主機(jī)服務(wù)器B服務(wù)器A客戶SMTPPOPInternet注:服務(wù)器A是發(fā)送郵件服務(wù)器(SMTP),服務(wù)器B是接收郵件服務(wù)器(POP3/IMAP)1. 電子郵件的發(fā)送和接收電子郵件在Internet上發(fā)送和接收的原理可以很形象地用我們?nèi)粘I钪朽]寄包裹來形容:當(dāng)我們要寄一個包裹的時候,我們首先要找到任何一個有這項(xiàng)業(yè)務(wù)的郵局,在填寫完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的郵局,那么對方取包裹的時候就必須去這個郵局才能取出。同樣的,當(dāng)我們發(fā)送電子郵件的時候
4、,這封郵件是由郵件發(fā)送服務(wù)器(任何一個都可以)發(fā)出,并根據(jù)收信人的地址判斷對方的郵件接收服務(wù)器而將這封信發(fā)送到該服務(wù)器上,收信人要收取郵件也只能訪問這個服務(wù)器才能夠完成。2. 電子郵件地址的構(gòu)成電子郵件地址的格式是“USERSERVER.COM”,由三部分組成。第一部分“USER”代表用戶信箱的帳號,對于同一個郵件接收服務(wù)器來說,這個帳號必須是唯一的;第二部分“”是分隔符;第三部分“SERVER.COM”是用戶信箱的郵件接收服務(wù)器域名,用以標(biāo)志其所在的位置。3. 電子郵件的工作原理電子郵件與普通郵件有類似的地方,發(fā)信者注明收件人的姓名與地址(即郵件地址),發(fā)送方服務(wù)器把郵件傳到收件方服務(wù)器,收
5、件方服務(wù)器再把郵件發(fā)到收件人的郵箱中。更進(jìn)一步的解釋涉及到以下幾個概念:MUA - Mail User Agent, 郵件用戶代理,幫助用戶讀寫郵件;MTA - Mail Transport Agent, 郵件傳輸代理,負(fù)責(zé)把郵件由一個服務(wù)器傳到另一個服務(wù)器或郵件投遞代理;MDA - Mail Delivery Agent, 郵件投遞代理,把郵件放到用戶的郵箱里。整個郵件傳輸過程如下:目前使用的SMTP 協(xié)議是存儲轉(zhuǎn)發(fā)協(xié)議,意味著它允許郵件通過一系列的服務(wù)器發(fā)送到最終目的地。服務(wù)器在一個隊(duì)列中存儲到達(dá)的郵件,等待發(fā)送到下一個目的地。下一個目的地可以是本地用戶,或者是另一個郵件服務(wù)器。如果下游的
6、服務(wù)器暫時不可用,MTA 就暫時在隊(duì)列中保存信件,并在以后嘗試發(fā)送。關(guān)于郵件系統(tǒng)的其他一些技術(shù),我們暫且不考慮。如下所示:郵件服務(wù)器提供了郵件系統(tǒng)的基本結(jié)構(gòu),包括郵件傳輸、郵件分發(fā)、郵件存儲等功能,以確保郵件能夠發(fā)送到Internet網(wǎng)絡(luò)中的任意地方。目前郵件服務(wù)器有兩種不同的應(yīng)用群體:ISP提供商和企事業(yè)單位。Web郵件技術(shù),使郵件用戶可以在任何地方使用瀏覽器登錄郵件服務(wù)器收發(fā)郵件,而不用配置郵件客戶端程序。多域郵件服務(wù)是一臺物理服務(wù)器為多個獨(dú)立注冊Internet域名的企業(yè)或單位提供電子郵件的服務(wù),在邏輯上,這些企業(yè)和單位擁有自己獨(dú)立的郵件服務(wù)器(企業(yè)郵局),也可以稱為虛擬郵件服務(wù)器技術(shù)。
7、對于ISP提供商和企業(yè)集團(tuán)公司來說,多域郵件服務(wù)器的支持能力是選擇郵件服務(wù)器的一個重要考慮因素。它可以方便地擴(kuò)展其橫向郵件服務(wù)能力。使用Linux作為郵件服務(wù)器,可以與Sendmail、MySQL等開源軟件共同使用,在滿足用戶需求的基礎(chǔ)上降低了系統(tǒng)價格。郵件服務(wù)器的安全防護(hù), 包括數(shù)據(jù)身份認(rèn)證、傳輸加密、垃圾郵件過濾、郵件病毒過濾、安全審計(jì)等的多項(xiàng)安全技術(shù)。身份認(rèn)證主要指SMTP發(fā)信認(rèn)證,此項(xiàng)功能對于郵件服務(wù)器是一個可選功能,主要目的是防止黑客利用自己的服務(wù)器攻擊其他郵件服務(wù)器。完善SMTP身份認(rèn)證不僅可以制止黑客的惡劣行為,同時可以保證自己的郵件服務(wù)器的各種資源可以充分地應(yīng)用到日常的郵件處理
8、過程中,不會造成服務(wù)器的系統(tǒng)崩潰和資源浪費(fèi)。無論是POP3協(xié)議還是SMTP協(xié)議,由于其在設(shè)計(jì)之初的缺陷,全部使用明碼進(jìn)行消息的傳遞,因此很容易造成信息的泄漏??梢酝ㄟ^兩種方式提高系統(tǒng)的安全性:鏈路加密和端對端加密。鏈路加密是使用加密工具(軟硬件工具)對傳輸?shù)木€路進(jìn)行數(shù)據(jù)加密,需要網(wǎng)絡(luò)設(shè)施的支持。端對端加密是郵件客戶端到郵件客戶端的加密,是郵件服務(wù)器應(yīng)當(dāng)提供的功能,目前較為流行的方式是使用SSL/TLS進(jìn)行傳輸加密。垃圾郵件大多是一些帶有商業(yè)性質(zhì)的廣告等宣傳品。據(jù)估計(jì),僅僅商業(yè)性垃圾郵件一項(xiàng),每封垃圾郵件所抵消的生產(chǎn)力成本就在1美元左右。單是下載垃圾郵件所花費(fèi)的上網(wǎng)費(fèi)與電話費(fèi),每年就要花掉全球網(wǎng)
9、民94億美元。此外,許多病毒以及身份證和信用卡盜用案例也與垃圾郵件有關(guān)。因此,需要郵件服務(wù)器具有垃圾郵件處理的功能,抵御大部分垃圾郵件的攻擊。黑客攻擊和病毒本來是兩個相對獨(dú)立的技術(shù)體系,但是隨著網(wǎng)絡(luò)的不斷發(fā)展,網(wǎng)絡(luò)工具與病毒越來越趨于融合,比如尼姆達(dá)病毒既是病毒,也是網(wǎng)絡(luò)攻擊的一種方式,而應(yīng)用廣泛的電子郵件,也成了病毒傳播的主要方式之一。目前,大多數(shù)郵件服務(wù)器都具有了基本的病毒防護(hù)的能力。目前的郵件服務(wù)器,僅中文就有若干字符集,如GB-2312、Big5等等,雖然我們可以統(tǒng)一標(biāo)準(zhǔn),但是,在實(shí)際的過程中,我們不可能統(tǒng)一所有的郵件客戶端,因此我們只能要求郵件服務(wù)器支持多語言的環(huán)境。由于目前許多郵件
10、服務(wù)器處于電信托管等方式(服務(wù)器托管、服務(wù)器租用),不可能經(jīng)常進(jìn)行本地操作,因此目前郵件服務(wù)器均提供了遠(yuǎn)程郵件監(jiān)控的功能??梢酝ㄟ^Web方式,監(jiān)控郵件服務(wù)器的工作狀態(tài),包括在線用戶數(shù)、郵件處理數(shù)量和速度、存儲空間使用率等,并且可以隨時對出現(xiàn)的發(fā)信高峰和網(wǎng)絡(luò)攻擊進(jìn)行遠(yuǎn)程處理。電子郵件系統(tǒng)應(yīng)該具備無限的擴(kuò)展能力,Internet網(wǎng)絡(luò)的一個特性是變化無常,需要應(yīng)對隨時而來的應(yīng)用尖峰。因此,需要電子郵件系統(tǒng)具有無限的可擴(kuò)展能力,這個能力主要體現(xiàn)在郵件的處理能力和郵件的存儲能力上。為了能夠使郵件的處理能力可以無限擴(kuò)展,就需要引入集群和負(fù)載均衡技術(shù),使應(yīng)用平臺可以在需要的時候無限擴(kuò)充,滿足長期或臨時的業(yè)務(wù)
11、需要。對于2000萬以上的郵件用戶來說,每天發(fā)送的郵件量至少在幾千萬封,為了便于郵件存儲,需要高性能的郵件存儲解決方案,最為理想的應(yīng)該是SAN技術(shù)在郵件服務(wù)器領(lǐng)域的應(yīng)用。常見郵件協(xié)議:SMTP(Simple Mail Transfer Protocol):SMTP主要負(fù)責(zé)底層的郵件系統(tǒng)如何將郵件從一臺機(jī)器傳至另外一臺機(jī)器。POP(Post Office Protocol):目前的版本為POP3,POP3是把郵件從電子郵箱中傳輸?shù)奖镜赜?jì)算機(jī)的協(xié)議。IMAP(Internet Message Access Protocol):目前的版本為IMAP4,是POP3的一種替代協(xié)議,提供了郵件檢索和郵件處
12、理的新功能,這樣用戶可以完全不必下載郵件正文就可以看到郵件的標(biāo)題摘要,從郵件客戶端軟件就可以對服務(wù)器上的郵件和文件夾目錄等進(jìn)行操作。IMAP協(xié)議增強(qiáng)了電子郵件的靈活性,同時也減少了垃圾郵件對本地系統(tǒng)的直接危害,同時相對節(jié)省了用戶察看電子郵件的時間。除此之外,IMAP協(xié)議可以記憶用戶在脫機(jī)狀態(tài)下對郵件的操作(例如移動郵件,刪除郵件等)在下一次打開網(wǎng)絡(luò)連接的時候會自動執(zhí)行。本系統(tǒng)主要從簡單的郵件客戶端來探討一個郵件系統(tǒng)。利用JavaMail來實(shí)現(xiàn)。以下是關(guān)于JavaMail的一些基本知識:JavaMail,顧名思義,提供給開發(fā)者處理電子郵件相關(guān)的編程接口。它是Sun發(fā)布的用來處理email的API
13、。它可以方便地執(zhí)行一些常用的郵件傳輸。我們可以基于JavaMail開發(fā)出類似于Microsoft Outlook的應(yīng)用程序。雖然JavaMail是Sun的API之一,但它目前還沒有被加在標(biāo)準(zhǔn)的java開發(fā)工具包中(Java Development Kit),這就意味著你在使用前必須另外下載JavaMail文件。除此以外,你還需要有Sun的JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework的運(yùn)行很復(fù)雜,在這里簡單的說就是JavaMail的運(yùn)行必須得依賴于它的支持。在Windows 2000下使用需要指定這些文件的
14、路徑,在其它的操作系統(tǒng)上也類似。JavaMail是可選包,因此如果需要使用的話你需要首先從下載。目前最新版本是JavaMail1.4,使用JavaMail的時候需要Javabean Activation Framework的支持,因此你也需要下載JAF。安裝JavaMail只是需要把他們加入到CLASSPATH中去,如果你不想修改CLASSPATH的話,可以直接把他們的jar包直接copy到JAVA_HOME/lib/ext下。這樣JavaMail就安裝好了。JavaMail包中用于處理電子郵件的核心類是:Session,Message,Address,Authenticator,Transp
15、ort,Store,Folder等。Session定義了一個基本的郵件會話,它需要從Properties中讀取類似于郵件服務(wù)器,用戶名和密碼等信息。Javax.mail.Session:Session 類定義了一個基本郵件會話(session),是Java Mail API最高層入口類。所有其它類都是經(jīng)由這個session 才得以生效。Session 對象用 Java.util.Properties 對象獲取信息,如郵件服務(wù)器、用戶名、密碼及整個應(yīng)用程序中共享的其它信息。Javax.mail.Message:一旦獲得 Session 對象,就可以繼續(xù)創(chuàng)建要發(fā)送的消息。這由 Message 類來
16、完成。因?yàn)?Message 是個抽象類,必需用一個子類,多數(shù)情況下為 Jernet.MimeMessage。MimeMessage 是個能理解 MIME 類型和頭的電子郵件消息,正如不同 RFC 中所定義的。雖然在某些頭部域非 ASCII 字符也能被譯碼,但 Message 頭只能被限制為用 US-ASCII 字符。Javax.mail.Address:一旦您創(chuàng)建了 Session 和 Message,并將內(nèi)容填入消息后,就可以用 Address 確定信件地址了。和 Message 一樣,Address 也是個抽象類。您用的是 Jernet.
17、InternetAddress 類。Javax.mail. Authenticator:與 J 類一樣,JavaMail API 也可以利用 Authenticator 通過用戶名和密碼訪問受保護(hù)的資源。對于JavaMail API 來說,這些資源就是郵件服務(wù)器。JavaMail Authenticator 在 Javax.mail 包中,而且它和 J 中同名的類 Authenticator 不同。兩者并不共享同一個 Authenticator,因?yàn)镴avaMail API 用于 Java 1.1,它沒有 J 類別。要使用 Authenticator,先創(chuàng)建一個抽象類的子類,并從 getPas
18、swordAuthentication() 方法中返回 PasswordAuthentication 實(shí)例。創(chuàng)建完成后,您必需向 session 注冊 Authenticator。然后,在需要認(rèn)證的時候,就會通知 Authenticator。您可以彈出窗口,也可以從配置文件中(雖然沒有加密是不安全的)讀取用戶名和密碼,將它們作為 PasswordAuthentication 對象返回給調(diào)用程序。Javax.mail.Transport:消息發(fā)送的最后一部分是使用 Transport 類。這個類用協(xié)議指定的語言發(fā)送消息(通常是 SMTP)。它是抽象類,它的工作方式與 Session 有些類似。僅
19、調(diào)用靜態(tài) send() 方法,就能使用類的 缺省 版本:Transport.send(message);或者,讀者也可以從針對自己的協(xié)議的會話中獲得一個特定的實(shí)例,傳遞用戶名和密碼(如果不必要就不傳),發(fā)送消息,然后關(guān)閉連接。 Javax.mail.Store:Store類實(shí)現(xiàn)特定郵件協(xié)議上的讀、寫、監(jiān)視、查找等操作。通過Javax.mail.Store類可以訪問Javax.mail.Folder類。Javax.mail.Folder:Folder類用于分級組織郵件,并提供照J(rèn)avax.mail.Message格式訪問email的能力。 具體用法大家可以查看JavaMail API。
20、簡單示例:package fss.base;import java.util.*;import javax.mail.*;import ernet.*;import java.util.Date;import javax.activation.*;import java.io.*;public class Mail/把本程序所用變量進(jìn)行定義。 具體在main中對它們賦植。private MimeMessage mimeMsg; / MIME郵件對象private Session session; / 郵件會話對象private Properties props; /
21、 系統(tǒng)屬性private boolean needAuth = false; / smtp是否需要認(rèn)證private String username = "" / smtp認(rèn)證用戶名和密碼private String password = ""private Multipart mp; / Multipart對象,郵件內(nèi)容,標(biāo)題,附件等內(nèi)容均添加到其中后再生成/MimeMessage對象public Mail(String smtp)setSmtpHost(smtp);createMimeMessage();public void setSmtpHost
22、(String hostName)System.out.println("設(shè)置系統(tǒng)屬性:mail.smtp.host = " + hostName);if (props = null)props = System.getProperties(); / 獲得系統(tǒng)屬性對象props.put("mail.smtp.host", hostName); / 設(shè)置SMTP主機(jī)public boolean createMimeMessage()try System.out.println("準(zhǔn)備獲取郵件會話對象!");session = Sessi
23、on.getDefaultInstance(props, null); / 獲得郵件會話對象catch (Exception e)System.err.println("獲取郵件會話對象時發(fā)生錯誤!" + e);return false;System.out.println("準(zhǔn)備創(chuàng)建MIME郵件對象!");try mimeMsg = new MimeMessage(session); / 創(chuàng)建MIME郵件對象mp = new MimeMultipart(); / mp 一個multipart對象/ Multipart is a container th
24、at holds multiple body parts.return true;catch (Exception e)System.err.println("創(chuàng)建MIME郵件對象失??!" + e);return false;public void setNeedAuth(boolean need) System.out.println("設(shè)置smtp身份認(rèn)證:mail.smtp.auth = " + need);if (props = null)props = System.getProperties();if (need) props.put(&qu
25、ot;mail.smtp.auth", "true"); else props.put("mail.smtp.auth", "false");public void setNamePass(String name, String pass)System.out.println("程序得到用戶名與密碼");username = name;password = pass;public boolean setSubject(String mailSubject) System.out.println("
26、;設(shè)置郵件主題!");try mimeMsg.setSubject(mailSubject);return true;catch (Exception e) System.err.println("設(shè)置郵件主題發(fā)生錯誤!");return false;public boolean setBody(String mailBody)trySystem.out.println("設(shè)置郵件體格式");BodyPart bp = new MimeBodyPart();bp.setContent("<meta http-equiv=Cont
27、ent-Type content=text/html; charset=gb2312>"+ mailBody, "text/html;charset=GB2312");mp.addBodyPart(bp);return true;catch (Exception e)System.err.println("設(shè)置郵件正文時發(fā)生錯誤!" + e);return false;public boolean addFileAffix(String filename) System.out.println("增加郵件附件:" +
28、filename);try BodyPart bp = new MimeBodyPart();FileDataSource fileds = new FileDataSource(filename);bp.setDataHandler(new DataHandler(fileds);bp.setFileName(fileds.getName();mp.addBodyPart(bp);return true;catch (Exception e) System.err.println("增加郵件附件:" + filename + "發(fā)生錯誤!" + e);
29、return false;public boolean setFrom(String from) System.out.println("設(shè)置發(fā)信人!");try mimeMsg.setFrom(new InternetAddress(from); / 設(shè)置發(fā)信人return true;catch (Exception e)return false;public boolean setTo(String to)System.out.println("設(shè)置收信人");if (to = null)return false;trymimeMsg.setReci
30、pients(Message.RecipientType.TO, InternetAddress.parse(to);return true;catch (Exception e)return false;public boolean setCopyTo(String copyto)System.out.println("發(fā)送附件到");if (copyto = null)return false;try mimeMsg.setRecipients(Message.RecipientType.CC,(Address) InternetAddress.parse(copyto
31、);return true;catch (Exception e)return false;public boolean sendout()trymimeMsg.setContent(mp);mimeMsg.saveChanges();System.out.println("正在發(fā)送郵件.");Session mailSession = Session.getInstance(props, null);Transport transport = mailSession.getTransport("smtp"); / ?transport.connect(
32、String) props.get("mail.smtp.host"), username,password);transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO);/ transport.send(mimeMsg);System.out.println("發(fā)送郵件成功!");transport.close();return true;catch (Exception e)System.err.println("郵件發(fā)送失??!" +
33、 e);return false;public static void main(String args)String mailbody = " 用戶郵件注冊測試 <font color=red>歡迎光臨</font> <a href="">啦ABC</a>"Mail themail = new Mail("");themail.setNeedAuth(true);if (themail.setSubject("郵件測試") = false)return;/郵件內(nèi)容
34、支持html 如 <font color=red>歡迎光臨</font> <a href="">啦ABC</a>if (themail.setBody(mailbody) = false)return;/收件人郵箱if (themail.setTo("shengshuai") = false)return;/發(fā)件人郵箱if (themail.setFrom("shengshuai") = false)return;/設(shè)置附件/if (themail.addFileAffix("
35、#") = false)/return; / 附件在本地機(jī)子上的絕對路徑themail.setNamePass("用戶名", "密碼"); / 用戶名與密碼if (themail.sendout() = false)return; 一 需求分析 電子郵件作為Internet最為廣泛的應(yīng)用之一,在人們的工作和生活中扮演著重要的角色,應(yīng)用的普及使電子郵件技術(shù)有了飛速的發(fā)展。不僅在普通人的日常生活中,而且,已經(jīng)成為現(xiàn)代企業(yè)內(nèi)外信息交流的必備工具,據(jù)統(tǒng)計(jì)Internet上有30%的業(yè)務(wù)是與電子郵件有關(guān)的。企業(yè)擁有自己的郵件系統(tǒng),不僅能夠提升企
36、業(yè)形象,而且更重要的是能為企業(yè)帶來實(shí)際效益。當(dāng)然作為一個郵件系統(tǒng)要考慮多方面,比如穩(wěn)定性、安全性等其他一些因素,但由于某些原因,在此只實(shí)現(xiàn)最基本的客戶端功能。Java為實(shí)現(xiàn)這種功能提供了豐富的類庫,借此,在老師的指導(dǎo)下,我們開始了網(wǎng)絡(luò)郵件系統(tǒng)的開發(fā)。郵件客戶端讓用戶可以方便地管理郵件服務(wù)器上自己的郵件,方便地發(fā)送郵件。要達(dá)到這個目的,要把用戶的相關(guān)個人信息數(shù)據(jù),相關(guān)的郵件服務(wù)器信息(收發(fā)郵件的服務(wù)器的域名、擁護(hù)登陸郵件服務(wù)器的帳號等)保存到郵件客戶端所在的服務(wù)器上的文件或者數(shù)據(jù)庫里。為了提高客戶端的響應(yīng)速度,需要把用戶的郵件保存下來,這樣以后就不用每次都連接到郵件服務(wù)器上去獲取郵件了。通過上面
37、的分析,郵件客戶端的主要功能需求分析描述如下:1. 注冊新用戶由于是一個支持多用戶的應(yīng)用,在使用的時候需要有一個登陸的過程,而在應(yīng)用剛開始提供給使用者使用的時候,不應(yīng)該規(guī)定使用者將以什么樣的帳號登陸,所以需要在登陸界面上提供一個給使用者自己注冊新用戶的功能,這樣可以創(chuàng)建應(yīng)用的用戶,保存用戶的信息,為登陸做好準(zhǔn)備。2. 用戶登陸用戶登陸后,進(jìn)入郵件客戶端的主界面,如果用戶設(shè)置了默認(rèn)郵件服務(wù)器,則列出用戶默認(rèn)郵件服務(wù)器上收件箱的所有郵件,在該列表上用戶可以選擇只顯示已讀郵件或者未讀郵件,或者刪除郵件。3. 新增郵件服務(wù)器用戶第一次使用客戶端的時候,至少要添加一個郵件服務(wù)器來收發(fā)郵件。郵件服務(wù)器的信
38、息包括:服務(wù)器名稱、登陸帳號(用戶名和密碼)、pop3(收郵件)服務(wù)器域名、smtp(發(fā)郵件)服務(wù)器域名、是否在該服務(wù)器上保留接受過的郵件。提供一個服務(wù)器列表,在列表上可以修改、刪除服務(wù)器信息。4. 修改個人信息 提供一個修改用戶個人信息的界面。個人信息有:用戶ID(登陸郵件客戶端的用戶名)、密碼、真實(shí)姓名、默認(rèn)郵件服務(wù)器。5. 接收郵件 用戶登陸的時候自動從默認(rèn)郵件服務(wù)器上收取新郵件,之后再在指定的間隔時間后自動接收新郵件,同時提供一個按扭,用于用戶手動接收郵件。6. 發(fā)送郵件提供一個郵件發(fā)送界面,在該界面上可以讓用戶輸入郵件發(fā)送、抄送、密送地址,如果有多個,多個地址間用英文分號隔開,可以編
39、輯上傳附件個數(shù),可以讓用戶把郵件保存為草稿,也可以直接發(fā)送郵件。7. 數(shù)據(jù)修改實(shí)時生效一部分用戶數(shù)據(jù)將保存在客戶端的會話里,當(dāng)用戶通過界面修改這部分?jǐn)?shù)據(jù)時,要刷新會話里保存的相應(yīng)數(shù)據(jù)。8. 同時支持IE和Firefox能在Microsoft Internet Explorer正常顯示和使用的網(wǎng)頁,不一定能在Firefox上正常顯示和使用,這是在制作網(wǎng)頁的時候需要注意的。二 系統(tǒng)設(shè)計(jì)從模擬用戶的角度進(jìn)行分析,對于一個郵件的客戶端,首先要確定其功能是什么,也就是用戶想要系統(tǒng)做什么工作。有以上需求分析可確定需要建立的模塊有:用戶注冊、用戶登錄、用戶管理、郵件服務(wù)器信息管理、郵件管理等。由此分析如下模
40、塊圖:WEB郵件客戶端用戶注冊用戶登陸用戶管理郵件服務(wù)器管理郵件管理登陸注冊新用戶修改個人信息發(fā)送郵件收取郵件刪除郵件查看郵件列表增加服務(wù)器信息刪除服務(wù)器信息修改服務(wù)器信息根據(jù)以上分析描述,基本確定了郵件客戶段應(yīng)該要包括的模塊,下面詳細(xì)地來分析每一個模塊所要實(shí)現(xiàn)的功能。1. 用戶注冊模塊該模塊通過點(diǎn)擊登錄界面的“注冊新用戶”按鈕進(jìn)入,在用戶注冊界面,要求用戶輸入:1 登錄ID,及登錄用戶名,必填,在郵件客戶端中,該ID是唯一的2 登錄密碼,必填,長度為18位3 顯示名,即阿松郵件時,接收人將看到的名字,一般是真實(shí)姓名,長度為1255個字節(jié)2. 用戶登錄模塊該模塊的界面就是登錄界面了,該模塊是已
41、注冊用戶進(jìn)入郵件客戶端的唯一入口。在這里要求用戶輸入登錄ID和密碼,輸入完成后直接按回車鍵或點(diǎn)擊“登錄“按鈕來提交登錄信息。對提交來的用戶名進(jìn)行校驗(yàn),如果校驗(yàn)不通過,則彈出對話框提示用戶輸入的用戶名或者密碼有誤;如果校驗(yàn)通過,則在會話中保存用戶的登錄ID,進(jìn)入郵件客戶端的主界面,并在主界面上提供退出系統(tǒng)的入口。3. 用戶管理模塊用戶管理模塊提供給用戶修改個人信息的功能,可修改的個人信息有:登錄密碼、顯示名和默認(rèn)郵件服務(wù)器。修改這些信息后,需要更新會話中保存的數(shù)據(jù),讓修改實(shí)時生效。4. 郵件服務(wù)器信息管理該模塊提供一個當(dāng)前用戶已有的郵件服務(wù)器列表,讓用戶添加、修改、刪除郵件服務(wù)器信息,實(shí)現(xiàn)接收多
42、個服務(wù)器上郵件的功能。添加郵件服務(wù)器時,需要用戶輸入:1. 服務(wù)器名,必填,用戶給該服務(wù)器起的名稱,以便于識別,最大航渡為32字節(jié)2. 登錄服務(wù)器的用戶名,必填,最大長度為255字節(jié)3. 登錄服務(wù)器的密碼,必填,最大長度為255字節(jié)4. pop3服務(wù)器域名,必填,最大長度為255字節(jié)5. smtp服務(wù)器域名,必填,最大長度為255字節(jié)6. 是否在郵件服務(wù)器保留郵件備份,即是否在郵件服務(wù)器上刪除已經(jīng)接收下來的郵件,默認(rèn)為否 上述信息都可以修改,修改后需要更新會話中保存的數(shù)據(jù),讓修改實(shí)時生效。5. 郵件管理模塊 該模塊主要包括以下幾個功能:1. 提供撰寫并發(fā)送郵件的郵件編輯頁面,在改界面上,用戶需
43、要填寫收件人的郵件地址、郵件主題及內(nèi)容,可以填寫要抄送或者密送的郵件地址,也可以上傳一個或者多個郵件附件,可以進(jìn)行發(fā)送郵件或者保存郵件為草稿的操作,可以在發(fā)送郵件的同時把郵件保存為已發(fā)送郵件。2. 提供一個收件箱列表,該列表以粗體字體顯示未讀郵件,可以讓用戶選擇只列出所有郵件、未讀郵件或者已讀郵件。在該列表上用戶可以選擇多個郵件,可以進(jìn)行刪除多個郵件的操作,在列表上對于每個郵件提供查看郵件詳細(xì)內(nèi)容的連接。3. 提供查看郵件詳細(xì)內(nèi)容的界面,在該界面上顯示郵件的發(fā)件人、主題、郵件的正文及附件文件名、文件大小并提供下載連接。在該界面上用戶可以進(jìn)行刪除郵件,寫回復(fù)郵件或者返回收件箱郵件列表的操作。4.
44、 提供一個草稿郵件列表,在該列表上用戶可以選擇多個郵件,同時刪除多個郵件,對于米格郵件提供進(jìn)入郵件編輯界面。UML設(shè)計(jì)(軟件工程流程)Uml設(shè)計(jì)基本遵循課堂上老師所講各圖規(guī)格,由于篇幅所致,部分圖樣顯示不理想,請多包含。1. 用例總圖2. 用例描述用例名稱:郵件系統(tǒng)注冊用例表識號:1參與者:用戶簡要說明:用戶填寫自己的基本注冊信息,提交注冊成功返回給用戶自己已填寫的信息。前置條件:用戶用瀏覽器進(jìn)入本系統(tǒng),并且是未注冊用戶?;臼录鳎?. 用戶進(jìn)入本系統(tǒng)點(diǎn)擊“用戶注冊”2. 顯示出一個文本框用戶填寫自己的郵箱地址3. 確定后點(diǎn)擊“注冊”4. 注冊成功后返回給用戶自己的郵箱地址5. 用例終止其他
45、事件流A1:在按“注冊”按鈕之前,用戶隨時可以按“返回”按鈕,文本框的內(nèi)容不保存。返回主頁異常事件流:2. 注冊未成功返回錯誤信息,用戶確認(rèn)。3. 返回到本系統(tǒng)主頁。后置條件:用戶的信息被保存到系統(tǒng)數(shù)據(jù)庫。注釋:無用例名稱:修改個人信息用例標(biāo)識號:2參與者:用戶簡要說明:用戶點(diǎn)擊“用戶管理”可以修改自己的信息,點(diǎn)確定后重新寫入數(shù)據(jù)庫信息前置條件:用戶已登錄本郵件管理系統(tǒng)基本事件流:1. 用戶登錄后點(diǎn)擊用戶管理。2. 根據(jù)用戶的需求填寫自己要修改的信息內(nèi)容。3. 修改確認(rèn)后點(diǎn)擊保存。4. 返回給用戶修改后的信息。5. 用例終止。其他事件流A1:在按“保存”按鈕之前,用戶隨時可以按“返回”按鈕,文
46、本框的內(nèi)容不保存。返回用戶的郵箱首頁異常事件流:1. 用戶輸入的修改信息不合法,系統(tǒng)提示其錯誤。2. 返回用戶郵箱首頁后置條件:用戶新信息被保存到數(shù)據(jù)庫。注釋:無用例名稱:登陸用例標(biāo)識號:3參與者:用戶簡要說明:用戶登陸到他的郵箱前置條件:用戶已注冊基本事件流:1、 用戶注冊之后,可點(diǎn)擊“登陸”進(jìn)入登陸頁面2、 用戶輸入登陸ID,密碼3、 點(diǎn)擊登陸按鈕,進(jìn)入自己的郵箱4、 用例終止其他事件流:1、 用戶可在此界面,進(jìn)行注冊2、 用戶取消登陸異常事件流:1、 提示輸入錯誤 ,用戶確認(rèn)2、 返回到登陸頁面后置條件:用戶輸入信息正確,進(jìn)入自己的郵箱注釋:無用例名稱:發(fā)送郵件用例標(biāo)識號:4參與者:用戶
47、簡要說明:用戶發(fā)送郵件給收件人前置條件:用戶已登錄基本事件流:1、單擊”寫信”按鈕 2、進(jìn)入發(fā)送郵件頁面3、用戶在文本框內(nèi)編輯收件人,主題,內(nèi)容信息 4、點(diǎn)擊”發(fā)送”按鈕,發(fā)送郵件5、用例終止其他事件流:1、可以任意添加或刪除附件 2、若發(fā)送的郵件占用空間太大,則添加不上3、收件人文本框里必須填寫正確的郵箱地址異常事件流:1、提示錯誤信息 ,用戶確認(rèn)2、返回到發(fā)送郵件頁面后置條件:xx給xx的郵件發(fā)送成功 再寫一封注釋:無用例名稱:接收郵件用例標(biāo)識號:5參與者:用戶簡要說明:用戶收取郵件,并查看郵件信息前置條件:用戶登錄基本事件流:1、 點(diǎn)擊”收信”按鈕2、 進(jìn)入查看郵件頁面3、 點(diǎn)擊某行發(fā)送
48、的郵件主題,則跳轉(zhuǎn)到顯示郵內(nèi)容頁面件4、 閱讀郵件內(nèi)容5、 返回6、 用例終止其他事件流:若郵件發(fā)送的是附件,打開或下載壓縮包到服務(wù)器是異常事件流:1、 提示錯誤信息 ,用戶確認(rèn)2、 返回到發(fā)送郵件頁面后置條件:無注釋:無用例名稱:刪除郵件用例標(biāo)識號:6參與者:用戶簡要說明:用戶對不想要的郵件進(jìn)行刪除前置條件:用戶已登錄基本事件流:1、 頁面上有刪除按鈕 2、 點(diǎn)擊你想刪除的那行郵件主題 然后點(diǎn)擊刪除3、 會出現(xiàn)一個”你確定刪除嗎?”4、 若點(diǎn)擊確定 會刪除此郵件5、 用例終止其他事件流:若點(diǎn)擊否 則不能進(jìn)行刪除 異常事件流:1、 提示錯誤信息 ,用戶確認(rèn)2、返回到發(fā)送郵件頁面后置條件:無注釋
49、:無用例名稱:查看郵件列表用例標(biāo)識號:7參與者:用戶簡要說明:用戶查看自己有多少,那些郵件前置條件:用戶已登錄基本事件流:1、 單擊”查看郵件”2、 進(jìn)入到郵件列表頁面3、 所有的郵件以列表的形式列出來4、 用例終止其他事件流:若郵件過多會分頁顯示異常事件流:1、 提示錯誤信息 ,用戶確認(rèn)2、返回到發(fā)送郵件頁面后置條件:無注釋:無用例名稱:增加郵件服務(wù)器信息用例標(biāo)識號:8參與者:用戶簡要說明:用于設(shè)置收發(fā)郵件的服務(wù)器前置條件:用戶已登陸基本事件流:1、用戶單擊“添加郵件服務(wù)器”,進(jìn)入添加頁面2、用戶輸入服務(wù)器名稱、登錄名、密碼、pop3域名、smtp域名、是否保留郵件備份等信息。3、用戶確認(rèn)無
50、誤后,點(diǎn)擊“添加“按鈕4、用例終止其他事件流:用戶退出此頁面異常事件流:對服務(wù)器域名檢驗(yàn)的提示對一些未填項(xiàng)的提示后置條件:無注釋:無用例名稱:刪除郵件服務(wù)器信息用例標(biāo)識號:9參與者:用戶簡要說明:如果某些服務(wù)器信息已無用,用戶可以對起刪除前置條件:用戶已登錄基本事件流:1、用戶單擊“刪除服務(wù)器信息“,進(jìn)入刪除頁面2、用戶在服務(wù)器信息列表里選擇要刪除的服務(wù)器,并點(diǎn)擊“刪除“按鈕3、用戶點(diǎn)擊提示中的“確認(rèn)“按鈕4、用例終止其他事件流:用戶退出此也面異常事件流:刪除服務(wù)器信息失敗后置條件:無注釋:無用例名稱:修改郵件服務(wù)器信息用例標(biāo)識號:10參與者:用戶簡要說明:用戶可以修改已添加的服務(wù)器信息前置條
51、件:用戶已登錄基本事件流:1、用戶單擊“添加服務(wù)器信息“,進(jìn)入添加頁面2、用戶輸入需要修改的信息3、用戶點(diǎn)擊提示中的“保存“按鈕4、用例終止其他事件流:用戶退出此頁面異常事件流:對一些未填項(xiàng)的提示后置條件:無注釋:無3. 序列圖(由于軟件運(yùn)用的不成熟,有些圖可能不是很完善,請見諒)注冊模塊登錄模塊修改個人信息模塊郵件服務(wù)器管理模塊郵件管理之發(fā)送郵件模塊郵件管理之接收郵件模塊郵件管理之刪除郵件郵件管理之郵件列表模塊4. 類圖由于篇幅所致,一下以此是相應(yīng)的類圖。但還是有一些圖效果不佳。敬請?jiān)?。注冊模塊登錄模塊修改用戶信息模塊郵件服務(wù)器管理模塊郵件管理之發(fā)送郵件模塊郵件管理之接收郵件模塊郵件管理之
52、刪除郵件模塊郵件管理之郵件列表模塊三數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫用于保存系統(tǒng)需要持續(xù)使用的數(shù)據(jù)對象,通過對需求及系統(tǒng)的設(shè)計(jì),郵件客戶端包含三個需要保存的對象實(shí)體:用戶實(shí)體、郵件實(shí)體、郵件服務(wù)器實(shí)體。下面就來分析一下這些實(shí)體:1. 實(shí)體分析1) 用戶實(shí)體用戶是系統(tǒng)的使用者,系統(tǒng)需要為每個用戶單獨(dú)保存在運(yùn)行過程中用到的用戶信息,讓用戶感覺到只有 自己一個人在使用系統(tǒng)。這些數(shù)據(jù)項(xiàng)可以參考ER圖,這里就不在贅述。2) 郵件服務(wù)器實(shí)體該實(shí)體與用戶實(shí)體在持久化層是一對多的關(guān)系,表現(xiàn)在一個用戶可以設(shè)置多個郵件服務(wù)器,而用戶只能同時使用其中一個郵件服務(wù)器,該服務(wù)器就是用戶默認(rèn)的郵件服務(wù)器,它通過用戶ID與用戶實(shí)體關(guān)聯(lián)。3
53、) 郵件實(shí)體郵件實(shí)體用于持久化郵件,在郵件客戶端中,除郵件附件外的郵件信息持久化在數(shù)據(jù)庫中,另外整封郵件將以文件的形式保存在磁盤中。每封郵件都屬于唯一的用戶及郵件服務(wù)器,郵件實(shí)體通過用戶、郵件服務(wù)器ID與用戶實(shí)體、郵件服務(wù)器關(guān)聯(lián)。2. ER圖分析 3. 數(shù)據(jù)表結(jié)構(gòu)1. 用戶表user字段名字段類型是否可以為空字段長度說明id文本否32用戶登錄名display_name文本否255用戶的真實(shí)姓名password文本否8登錄密碼default_domain文本是32默認(rèn)郵件服務(wù)器2. 郵件服務(wù)器表domain字段名字段類型是否可以為空字段長度說明id文本否32唯一標(biāo)示name文本否32服務(wù)器名稱login_name文本否255服務(wù)器登錄名login_password文本否32服務(wù)器登錄密碼Pop3_server文本否255Pop3服務(wù)器Smtp_server文本否255Smtp服務(wù)器keep_copy是/否是是否保存郵件備份us
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 尋常痤瘡的臨床護(hù)理
- 生涯發(fā)展指導(dǎo)課:《規(guī)劃的人生更精彩》學(xué)習(xí)心得體會模版
- 買賣房過渡合同范例
- 人防工程租賃合同范例
- 2025年餐飲服務(wù)員年度工作總結(jié)模版
- 個人月度工作總結(jié)模版
- 2024年太陽能組件生產(chǎn)裝備項(xiàng)目資金需求報告代可行性研究報告
- 2025年小學(xué)數(shù)學(xué)組教研活動總結(jié)模版
- 保險推廣合同范例
- 個人桑蠶養(yǎng)殖合同范例
- 手術(shù)室常用藥物
- 數(shù)字貿(mào)易學(xué) 課件 第18、19章 全球數(shù)字經(jīng)濟(jì)治理概述、包容性發(fā)展與全球數(shù)字鴻溝
- 學(xué)校護(hù)蕾行動工作方案及計(jì)劃書
- DLT 866-2015 電流互感器和電壓互感器選擇及計(jì)算規(guī)程解讀
- 房屋抵押個人借款標(biāo)準(zhǔn)合同
- 云南省昆明市2022-2023學(xué)年二年級下學(xué)期語文期中試卷(含答案)
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 4-07-02-05 商務(wù)數(shù)據(jù)分析師S 2024年版
- 口腔預(yù)防保健課件 英文
- 10、工地試驗(yàn)室培訓(xùn)
- 讀后續(xù)寫-制作稻草人(T8聯(lián)考)課件-高考英語作文復(fù)習(xí)專項(xiàng)
- 研發(fā)成果商業(yè)化轉(zhuǎn)化(資料)
評論
0/150
提交評論