基于javaMail电子邮件系统的设计含源文件_第1页
基于javaMail电子邮件系统的设计含源文件_第2页
基于javaMail电子邮件系统的设计含源文件_第3页
基于javaMail电子邮件系统的设计含源文件_第4页
基于javaMail电子邮件系统的设计含源文件_第5页
免费预览已结束,剩余32页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计I报告题目:电子邮件系统设计专学生姓班级学指导教指导单日业名号师软件工程*位计算机学院软件工程系期2009.6.102008.6.221、 课题名称电子邮件系统设计2、 课题内容设计一个电子邮件系统,包括客户端和服务器端的设计、邮件处理过程建模和具体功能的实现等。3、 系统分析电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。电子邮件把邮件发送到ISP的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到ISP的邮件服务器进行读取。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。本系统分析中给出

2、了电子邮件服务器和电子邮件客户端的简介,同时给出了本次试验中客户端的主要功能和总体框图。邮件服务器按照提供的服务类型,可以分为发送邮件服务器(简称发送服务器)和接收邮件服务器(简称接收服务器)。发送邮件服务器使用邮件发送协议,现在常用的是SMTP所以通常发送邮件服务器也称为SMTFW务器;接收邮件服务器使用接收邮件协议,常用的有POP勃议和IMAPB议,所以通常接收邮件服务器也称为POP3K务器或IMAP服务器。SMTP(SimpleMailTransferProtocol),即简单邮件传输协议,是Internet传送E-mail的基本协议,也是TCP/IP协议组的成员。SMTP协议解决邮件系

3、统如何通过一条链路,把邮件从一台机器传送到另一台机器上的问题。SMTP协议的特点是具有良好的可伸缩性,这也是它成功的关键。它既适用于广域网,也适用于局域网。SMTP*议由于非常简单,使得它得到了广泛的运用,在Internet上能够发送邮件的服务器几乎都支持SMTFW议。POP3(PostOfficeProtocol3),即邮局协议第3版,是Internet接收邮件的基本协议,也是TCP/IP协议组的成员。RFC1939描述了POP3协议,网址为"/rfc/rfc1939.txt”。POP蹴允许接收服务器向邮件用户发送邮件,也可以接收来自SMTPK务

4、器的邮件。邮件客户端软件会与POP3艮务器交互,下载由POP3R务器接收至邮件。基于POP3协议的邮件系统能提供快速、经济和方便的邮件接收服务,深受用户的青睐。IMAP(InternetMessageAccessProtocol),即互联网消息访问协议,是一种功能比POP3M强大的新的接收邮件协议。目前最新的IMAP协议版本为IMAP4RFC2060的述了IMAP4网址为“/rfc/rfc2060.txt”。IMAP4与POP3协议一样提供了方便的下载邮件服务,允许用户在脱机状态下阅读已经下载到本地硬盘的邮件。但IMAP4的功能远远不只这些,它还具有以下功能

5、:摘要浏览邮件的功能。选择性下载附件的功能。鼓励用户把邮件一直存储在邮件服务器上。允许用户把远程邮件服务器上的邮箱作为信息存储工具。MIME(MultipurposeInternetMailExtensions,多用途Internet邮件扩充标准)不是邮件传输协议,而是对邮件格式所作的规范。RFC2045RFC204侨口RFC20471MIM日乍了描述。MIMEg对RFC822勺扩充,RFC822®定了内容只包括采用ASCII编码的纯文本的邮件的格式,而MIME允许在邮件中包含附件。整个电子邮件系统的工作过程及一些涉及到的协议如下图所示:E-mail服务器应客户机B电子邮件系统包含:

6、电子邮件服务器端和电子邮件客户端SUN公司制定了JavaMailAPI,它封装了按照各种邮件通信协议,如IMARPOP琳口SMTP与邮件服务器通信的细节,为Java应用程序提供了收发电子邮件的公共接口,参见下图:JavaMailAPI主要位于javax.mail包和ernet中,下图为其中主要类的类框图Session*getStore()getTranspcrtOz、&StoreTransport*connect()*send()Foler*getFoler()Messageopen。create。dele悔。Addressclose。getMessageQ

7、1. javax.mail.Session类:表示邮件会话,是JavaMailAPI的最高层入口类。2. javax.mail.Store类:表示接收邮件服务器上的注册用户的存储空间,通过Store类的getFolder()方法,可以访问用户的特定邮件夹3. javax.mail.Folder类:代表邮件夹。4. javax.mail.Message类:代表电子邮件。5. javax.mail.Address类:代表邮件地址。6.javax.mail.Transport您的运行Web浏览器的计算机浏览器连接至服务器并请求页面服嘉而凝的页面发送回来类:根据指定的邮件发送协议(通常是SMTP,通过

8、指定的邮件发送服务器来发送邮件电子邮件服务器的最简模型如下图:运行Web服务用的服资静计菖机rzzi电子邮件服务器的结构一般如下图所示:日期Thu.30Nov200616:54.54+0800(CST)发件人adminmvdomain.corri邮件头收件人admiriiYWuneBodyPart1(text/Plain)attchl.MimeBodyPart2MimeBodyPart3与其他SMTpi务器会话以发送邮件)如下图按照MIME规范,电子邮件包括邮件头和正文两部分。邮件头中包括日期、发送者地正文MimeMultIFartattch2.rar里子邮件客户副电子邮件客户端javax.m

9、ail.Message抽象类表示邮件,它的具体子类为javax.mail.MimeMessage类,它提供了读取和设置邮件中各个部分的getXXX()和setXXX()方法:setSubject(Stringsubject)方法设置邮件的主题。setHeader(Stringname,Stringvalue)方法设置邮件头部的某一项。setContent(Objecto,Stringtype)方法设置邮件的正文。javax.mail.Address抽象类表示邮件地址,它的最常用的子类是javax.mail.InternetAddress类。InternetAddress类表示Internet网

10、上通用的邮件地址,形式为admin或者“Admin<adminmydomain.corn>。电子邮件客户端是安装在个人电脑上面的一种软件,用于和电子邮件服务器端的连接。基本上所有的客户端一般都有以下四个基本功能:a.通过POP3攵取用户各种邮箱的邮件。由于考虑到POPular服务器地址的不同,但又可以接收不同邮箱地址的邮件,所以增加了这个功能。b.在线阅读邮件,这个功能是电子邮件系统必备的功能。,c.接收保存邮件,用户可以再阅读邮件之后,将其保存起来,在需要的时候再次阅读。,d.在线处理邮件,如果收到一些垃圾邮件或者不是很重要的邮件,那么用户可以将它们放到垃圾箱或者然后在去垃圾箱中

11、将它彻底删除,这是最好的办法。这个时候就要引入在线处理邮件功能,这个功能能够删除邮件。,e.发送附件。有时候邮件太长,或者是表格、Word文档,一正文方式发送不太方便,这样可以引用一个附件功能。及那个这些表格或Word文档以附件的形式上传,让后发送。在扩充一下,提供可以发送多个邮件的功能。(本功能为扩展功能,本系统并未实现)。,f.接收附件,相对于发送附件而言,接收附件的功能必不可少。不然不能阅读邮件的内容。同样,应该扩充可以接受多个附件的功能。,g.SMTP验证,当前大部分的SMTP®务器,在用户发送邮件的时候,都需要进行用户名和密码的验证h.邮件文件夹管理,该功能提供了用户可以再

12、除了了有收件箱等必须得文件夹时,可以根据自己的需要创建新的文件夹用于更好大的管理自己收到的邮件,还可以重命名和删除用户自己创建的文件夹。,i.回复邮件,该功能是电子邮件系统必备的功能下面列出了本系统的总体功能:电子邮件系统.、/JXZ总之,由上面的电子邮件服务器和客户端的分析可知该电子邮件系统收发邮件的整个过程和图示如下:t发送邮件SMTP(1)发信人调用用户代理来编辑要发送的邮件。用户代理用SMTP把邮件传送给发送端邮件服务器(2) 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。(3) 运行在发送端邮件服务器的SMTP客户进程,发现在邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器

13、的SMTP服务器进程发起TCP连接的建立。(4) TCP连接建立后,SMTP客户进程开始向远程的SMTP服务器进程发送邮件。当所有的待发送邮件发完了,SMTP就关闭所建立的TCP连接。(5) 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在方便时进行读取。(6) 在打算收信时,调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中的取回(如果邮箱中有来信的话)。(7) 系统设计本系统基于JavaMialAPI采用B/S设计结构。使用ApacheTomcat做为WEBK务器和JSPServlet的容器。JDK中并不

14、包含JavaMailAPI。为了开发JavaMail应用程序,需要从SUN司的网站下载JavaMailAPI及其实现的类库,该类库由两个JAR文件组成:mail.jar和activation.jar。JavaMail应用程序在初始化过程中需要执行如下步骤。步骤(1)设置JavaMail属性:Propertiesprops=newProperties。;props.put("tocol","smtp");props.put("tocol","imap")

15、;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:指定由B件发送协议。tocol:指定邮件接收协议。mail.sm

16、tp.class:指定支持SMTPtb议的Transport具体类,允许由第三方提供。mail.imap.class:指定支持IMAP协议的Store具体类,允许由第三方提供。mail.smtp.host:指定采用SMTPtb议的邮件发送服务器的IP地址或主机名步骤(2)调用javax.mail.Session类的静态方法Session.getDefaultInstance()获得Session实例,该方法根据已经配置的JavaMail属性来创建Session实例:Sessionmailsession=Session.getDefaultInstance(props);步骤(3)调用Sessi

17、on的getStore(Stringprotocol)方法来获得Store对象,参数protocol指定接收邮件协议:Storestore=mailsession.getStore("imap");步骤(1)把mail.imap.class属性设为com.sun.mail.imap.IMAPStore,因此以上getStore()方法返回com.sun.mail.imap.IMAPStore类的实例。步骤(4)调用Store对象的connect()方法连接到接收邮件服务器。调用connect()方法时,应该指定接收邮件服务器的主机名或IP地址、用户名和口令。store.co

18、nnect(hostname,username,password);获得了Store对象后,就可以通过它来访问邮件服务器上的特定邮件用户了。通常会对邮件用户执行以下操作。操作(1)创建并发送邮件:/创建邮件msg=newMimeMessage(mailsession);InternetAddress口toAddrs=InternetAddress.parse("admin”,false);/设置邮件接收者msg.setRecipients(Message.RecipientType.TO,toAddrs);/设置邮件的主题msg.setSubject("hello"

19、;);/设置邮件的发送者msg.setFrom(newInternetAddress("admin");/设置邮件的正文msg.setText("Howareyou");/发送邮件Transport.send(msg);Transport的静态方法send(Message)负责发送邮件服务器,邮件发送协议由tocol属性指定,邮件发送服务器由mail.smtp.host属性指定。操作(2)打开inbox邮件夹收取邮件:/获得名为“inbox”的邮件夹Folderfolder=store.getFolder("

20、inbox");/打开邮件夹folder.open(Folder.READ_ONLY);/获得邮件夹中的邮件数目System.out.println("Youhave"+folder.getMessageCount()+“messagesininbox.");/获得邮件夹中的未读邮件数目System.out.println("Youhave"+folder.getUnreadMessageCount()+"unreadmessagesininbox.");在IMAP协议中,inbox邮件夹是邮件用户的保留邮件夹,用

21、户不允许删除该邮件夹,邮件服务器把所有接收到的新邮件都存在该邮件夹中。操作(3)从邮件夹中读取邮件:/从邮件夹中读取第一封邮件Messagemsg=folder.getMessage(1);System.out.println("thefirstmessageininbox");/获得邮件的发送者、主题和正文System.out.println("From:"+msg.getFrom()0);System.out.println("Subject:"+msg.getSubject();System.out.println("

22、Text:"+msg.getText();系统设计中,给出了本次试验的UML8模和系统各个模块的划分。一、UMLB模1 .本系统的用例图:UploadaccessoTY图中User是本系统的总用户,Sender和Receiver分别为发送邮件者和接收邮件者是从User中泛化出来的。Uploadaccessory表示为上传附件用例;Sendingmail表示为发送邮件用例;Longin表示为登录用例;Receivingmail表示为接收邮件用例;Savingmail表示为保存邮件用例;Savingaccessory表示为保存附件用例;Folder表示为管理邮件文件夹用例;Createn

23、ewfolder表示为创建新的邮件文件夹用例;Renamefolder表示为重命名创建的邮件文件夹用例;Deletefolder表示为删除创建的邮件文件夹;Deletingmail表示为删除用户收到的邮件用例。2 .本系统的时序图和对应的协作图:(1)用户发送邮件的时序图:lodinmailsystemt怛qod照ofsaruiimimaL!曰dd曰亡cessoE>r3.pointoutth42.summituseridtosystem>rtusersendmail4:nputrn削Iaddressandthemeoftheoppositesidecontentsmridsoon?

24、444J441i|16.pointputthesuccessofsendiingM-1;5.addaccessoryoarmatron11111Sefid-r二u9日r1.inputusernameandasecretcode.selelertfiennailserver从上图中可以看出,首先用户得登录系统,在登录系统时还可以选择登入服务器。用户正常登录系统后,系统会将用户的ID保存在session变量中,并传递给发送和回复邮件模块。用户打开发送邮件界面就可以发送邮件了。界面提示输入相关邮件信息,按提示输入收件人邮件地址、主题和内容等信息后,单击“发送”按钮就可以发送了。有时候需要发送附件,单

25、击“添加附件”命令选择需要添加的文件就可以了。最后提示发送成功。(2)用户接收邮件的时序图:loqinmail3闿gmthemtdLilefci卬出阳口口rr.ailBadaccessoryReceiver:user1inputusernameandhsecretcode,selecHreversonlanguagesummituseridtosysteqi3.showthi5tofmails4.readthecontentsofmail5.iodaccessory6.savemail从上图中可以看出,用户首先还是先登录邮件系统,然后系统将所有提交用户的ID保存到session变量中,并传递给

26、接收邮件模板。该界面列出了所有的邮件,用户可以打开某个邮件阅读。有时候邮件是以附件的形式发送的,这样用户在接收邮件是就需要先下载附件,然后保存。(3)用户发送邮件的协作图:这是与上面用户发送邮件的时序图对应的协作图。5:addaccessory(4)用户接收邮件的协作图:这是与上面用户接收邮件的时序图对应的协作图5:Foadaccessory3.本系统的总体分析模型(类图):1PMessage,Subject:String>frorr:String二String*cc:String>bcc:String:Stiir>g目依iwe-int忸M:String时remdFiaq二b

27、onlwan鱼>uHName:URLName爱M白痴on;S士第on葩愀。:§tnr§JturiFold&r:folder'ADcrnrrMsg;Mssagt*-MailUserDataQgetURLNanieQ%eWMLNamsQ%eSesionO*setSessicTiQgatStoreQgMCurtFoldeQ*setCurrFold&rQdaDel#-teFafdeO.doCreateFolde。doRenaE电FoEeDdaDekteUfessAgeQdaAsseinblflWflssageOdoAsswmbleMssag#JaStf

28、tdMessaftQdaAppendlWessageQ pbless网占0加电赘叫士。*assembleAddresX) g3Di$p1d冶sQgetFromQsetFromO*geToQMftToQgqtcc。*setCCOgetBCCOebccogetSizeQsetSfzeO g鼠Sub官dOetSubjeciOgwtTsetTextO 1工1该类图中包含了两个类:PMessag京口MailUserData。其中PMessage对Messaged的重新封装,提供更方便的读取邮件信息的方法。例如,在Messag睽中读取邮件地址的方法,如getTo()方法返回Address类型,如果要把它显

29、示到网页上,必须把Address数组转化为对应的字符串。PMessage勺构造方法PMessagetMessag瞰据重新封装。JSP网页调用PMessage0勺getTo方法可以直接获得字符串类型的地址。MailUserData类用来存放用户的相关信息,还有对邮件文件夹操作的一些方法的定义,还有邮件管理的一些操作的定义,例如:发送邮件,删除邮件等。4.本系统的活动图:a.用户接收邮件的活动图,在接收邮件是可以分两种方式,一种是文本形式,另一种是附件形式。接收邮件后,用户可以并列做3件事,即保存邮件、删除邮件和将邮件放入垃圾箱。至此,用户接收邮件的活动完成。b.用户发送邮件的活动图,在发送邮件的

30、活动中,还是一样,用户首先必须登录邮件系统,这样,以后的操作才可以进行。发送的主要活动就是发送邮件一个,它以两种形式发送的。Qsernameastheformoftcreatenewfc-lder命名创建的文件夹和删除创建的文件夹theformofappendixsendingmailc.用户管理邮件文件夹的活动图,用户可以根据自己的需要新建邮件文件夹、重新usernameandsecrfttcodeiserior_9deletefolderandsecretcodeiserrorenamefolderloginmailsystemloginmail叩t电mfolder5.本系统的组件图、系统

31、模块的划分模块,作为验证需要;其次是接收邮件和附件模块,该模块负责邮件的接收,有的是以5大模块,首先是登录附件形式接收的,再次是发送和回复模块,该模块负责该对方发送邮件,有的还是以附件形式发送的;接着是邮件处理模块,该模块负责邮件的阅读、保存和删除等操作;然后是邮件文件夹的管理,该操作负责邮件文件夹的新建、重命名和删除等操作。下面累出了本系统的模块体系,如图:电子邮件系统1 .登录模块登录模块主要有login.jsp完成,其中包括下图中的几部分。(1)选择登录服务器,本系统采用了MerakMailSErvler公司提供的Mail服务器使用版本。(2)选择指定邮件地址和密码。在本系统中有所提供的

32、Mail服务器创建了2个账户进行登录。必须选用正确的邮件地址和密码才可以登录,不然会报错。登录模块的图示:登录模块2 .接收邮件和附件模块接收邮件和附件模块主要由showmessage.jsp文件完成,包括下图中的几个部分(1)接收邮件。一个邮件系统最基本的功能就是能够接受对方发送的邮件。(2)保存附件。如果对方是以附件的形式发送邮件给用户,那么用户在接收邮件时,必须先下载邮件,将其保存到本地机之后,才能阅读接收邮件和附件模块的图示:接收邮件和附件模块3 .发送和回复邮件模块发送和回旻邮件模块主要由compose.jsp文件元成,包括图中的几个部分。(1)编写新邮件。该部分也是电子邮件系统中最

33、基本的功能。(2)上传附件。在编写邮件时,邮件内容可以以附件的形式发送,这样就需要先将附件上传到服务器,然后在发送给对方。发送和回复邮件模块的图示:发送和回复邮件模块编写新邮件4 .邮件处理模块邮件处理模块主要由listonefoldr.jsp文件完成,包括图中的几个部分。(1)显示邮件列表。在登录后的首页中就以分页显示的形式列出了所有的邮件,便于管理。(2)删除选中邮件。在选中删除的邮件后,可以单击该命令删除邮件。(3)显示错误信息。在出现一些登录错误,删除错误,下载错误是,将显示不同的错误信息提示用户。邮件处理模块的图示:邮件处理模块显示邮件列表删除选中邮件显示错误信息5 .邮件文件夹管理

34、模块邮件文件夹管理模块主要是由listallfolders.jsp文件完成,包括图中的几个部分。(1)创建新的邮件文件夹。用户可以根据自己的需要创建新的邮件文件夹,便于管理用户的邮件。(2)重命名邮件文件夹。用户可以重新命名自己创建的邮件文件夹。(3)删除邮件文件夹。用户可以删除自己创建的邮件文件夹。邮件文件夹管理模块的图示:邮件文件夹管理模块创建邮件文件夹重命名邮件文件夹删除邮件文件夹5、 系统实现1 .服务器的安装和配置1 .在做本次系统之前,必须配置JSP的服务器和电子邮件的服务器。(1)JSP的服务器,主要使用的是Tomcat,同时在安装Tomcat服务器之前,必需已经安装了SU心司的

35、JDK,在安装Tomcat的时候主要是注意电脑环境变量的更改。安装完成后,只要在浏览器中输入http:/localhost:8080/看是否能打开Tomcat的网页,如果能,则表示安装成功,8080端口是Tomcat的默认端口,如果电脑上有服务已经把端口占用了,可以把占用该端口的服务关掉,如果该服务关不掉或者比较重要,可以再Tomcat的安装目录中找到server.xml文件,将其中port="8080"改成没有被占用的端口号。(2)电子邮件服务器的配置:在本系统中我们采用了MerakMailServler公司的Mail服务器,安装完成后,在配置中输入本次实验所需要的域名和

36、用户等信息。然后保存,配置完成。2 .客户端的实现给出本系统中包含的两个类:由于代码比较多,所以这里只给出了核心代码。首先要加入一个中文字符串处理函数用于是邮件能发送中文:publicStringcodeToString(Stringstr)/处理中文字符串的函数Strings=str;trybytetempB=s.getBytes("ISO-8859-1");s=newString(tempB);returns;catch(Exceptione)returns;1. PMessage重新生了Message。(1) 重新封装Message类获得邮件的时间、主题、大小、内容还

37、有地址等;publicPMessage(Messagemsg)throwsExceptionif(msg!=null)获取餐mpjeDateFormagdf笛newSimpieDafeFbrmatjMMdd忖,HH:mm:ss"力i、tirydate=df.format(msg.getSentDate()!=null)?msg.getSentDate():msg.getReceivedDate();catch(Exceptione)date=newDate().toString();subject=msg.getSubject();size=msg.getSize();Objectc

38、ontent=""trycontent=msg.getContent();catch(Exceptione)if(msg.isMimeType("text/plain")&&content!=null)text=(String)content;from=assembleAddress(msg.getFrom();to=assembleAddress(msg.getRecipients(Message.RecipientType.TO);cc=assembleAddress(msg.getRecipients(Message.Recipie

39、ntType.CC);bcc=assembleAddress(msg.getRecipients(Message.RecipientType.BCC);(2)构造函数PMessage(Stringto,Stringcc,Stringbcc,Stringsubj,Stringtext;publicPMessage(Stringto,Stringcc,Stringbcc,Stringsubj,Stringtext)to.replace('',',');cc.replace('',',');bcc.replace('',

40、',');this.to=to;this.cc=cc;this.bcc=bcc;this.subject=subj;this.text=text;)(3)将Address数组转化为对应的字符用,用于在页面上显示;privateStringassembleAddress(Address口addr)if(addr=null)return""StringaddrString=""booleantf=true;for(inti=0;i<addr.length;i+)addrString=addrString+(tf)?""

41、;:",")+getDisplayAddress(addri);tf=false;)returnaddrString;)(4)返回一个适合msg头的字符串。privateStringgetDisplayAddress(Addressa)Stringpers=null;Stringaddr=null;if(ainstanceofInternetAddress&&(pers=(InternetAddress)a).getPersonal()!=null)addr=pers+""+"&lt;"+(InternetAd

42、dress)a).getAddress()+"&gt;"elseaddr=a.toString();returnaddr;2. MailUserData类(1)删除用户自己创建的邮件夹,但不允许删除Web应用指定的系统邮件夹;publicvoiddoDeleteFolder(Stringfoldername)throwsException/can'tdeletereservedfolderif(foldername.equalsIgnoreCase("inbox")|foldername.equalsIgnoreCase("tr

43、ash")|foldername.equalsIgnoreCase("draft")|foldername.equalsIgnoreCase("sendbox")thrownewException("Cann'tdeletereservedfolder");Folderfolder=store.getFolder(foldername);if(!folder.exists()thrownewException("Thisfolderdoesnotexists");if(folder.isOpen(

44、)folder.close(true);folder.delete(true);(2)修改用户自己创建的邮件夹的名字,但不允许修改Web应用指定的系统邮件夹得名字;publicvoiddoRenameFolder(Stringfromname,Stringtoname)throwsExceptionif(toname=null|toname.equals("")thrownewException("Youdonotinputnewfoldernamewhenrenamingfolder");/can'trenamereservedfolderif

45、(fromname.equalsIgnoreCase("inbox")|fromname.equalsIgnoreCase("trash")|fromname.equalsIgnoreCase("draft")|fromname.equalsIgnoreCase("sendbox")|toname.equalsIgnoreCase("inbox")|toname.equalsIgnoreCase("trash")|toname.equalsIgnoreCase("d

46、raft")|toname.equalsIgnoreCase("sendbox")thrownewException("Cann'trenamereservedfolder");FolderfolderFrom=store.getFolder(fromname);FolderfolderTo=store.getFolder(toname);if(!folderFrom.exists()thrownewException("Thisfolderdoesnotexists");if(folderFrom.isOpen()

47、folderFrom.close(true);folderFrom.renameTo(folderTo);(3)创建用户自己的邮件夹;publicvoiddoCreateFolder(Stringfoldername)throwsExceptionif(foldername=null|foldername.equals("")thrownewException("Youdonotinputnewfoldernamewhencreatingfolder");Folderfolder=store.getFolder(foldername);if(folder

48、.exists()thrownewException("Thisfolderalreadyexists");folder.create(Folder.HOLDS_MESSAGES);(4)把邮件添加到参数指定的邮件夹中;publicvoiddoAppendMessage(Messagemsg,Folderf)throwsExceptionMessagem=newMessage1;m0=msg;f.appendMessages(m);(5)根据参数指定的邮件信息,如标题,收发地址和邮件内容,来构建Message对象;publicMessagedoAssembleMessage

49、(Stringto,Stringcc,Stringbcc,Stringsubj,Stringtext)throwsExceptionMessagemsg=newMimeMessage(session);InternetAddresstoAddrs=null,ccAddrs=null,bccAddrs=null;if(to!=null)toAddrs=InternetAddress.parse(to,false);msg.setRecipients(Message.RecipientType.TO,toAddrs);elsethrownewMessagingException("No&

50、quot;To"addressspecified");if(cc!=null)ccAddrs=InternetAddress.parse(cc,false);msg.setRecipients(Message.RecipientType.CC,ccAddrs);if(bcc!=null)bccAddrs=InternetAddress.parse(bcc,false);msg.setRecipients(Message.RecipientType.BCC,bccAddrs);if(subj!=null)msg.setSubject(subj);msg.setFrom(new

51、InternetAddress(urlName.getUsername()+""+urlName.getHost();if(text!=null)msg.setText(text);returnmsg;(6)如果该邮件在Trash邮件夹中,就永久删除该邮件,否则把这封邮件移到Trash邮件夹中;publicvoiddoDeleteMessage(intarrayOpt,Folderf)throwsExceptionfor(inti=0;i<arrayOpt.length;i+)if(arrayOpti=0)continue;Messagemsg=f.getMessag

52、e(i+1);if(!f.getName().equals("Trash")Messagem=newMessage1;m0=msg;FolderTrash=store.getFolder("Trash");f.copyMessages(m,Trash);msg.setFlag(Flags.Flag.DELETED,true);elsemsg.setFlag(Flags.Flag.DELETED,true);f.expunge();(7)从用户当前邮件夹中,把用户当前访问的邮件移到参数指定的邮件中;publicvoiddoMoveMessage(Strin

53、gtoFolderName)throwsExceptionFolderfolderFrom=currFolder;FolderfolderTo=store.getFolder(toFolderName);if(!folderTo.exists()thrownewException("Folderdoesnotexist");Messagem=newMessage1;m0=currMsg;folderFrom.copyMessages(m,folderTo);currMsg.setFlag(Flags.Flag.DELETED,true);folderFrom.expunge

54、();(8)把用户编辑的邮件保存到Draft邮件夹中;publicvoiddoSaveMessage(PMessagepmsg)throwsExceptionMessagemsg=doAssembleMessage(pmsg);/savemessageindraftfolderFolderf=store.getFolder("Draft");if(!f.isOpen()f.open(Folder.READ_WRITE);doAppendMessage(msg,f);(9)发送邮件,并把邮件保存到SendBox邮件夹中。publicvoiddoSendMessage(PMes

55、sagepmsg)throwsExceptionMessagemsg=doAssembleMessage(pmsg);/sendmessageTransport.send(msg);/savemessageinsendboxfolderFolderf=store.getFolder("SendBox");if(!f.isOpen()f.open(Folder.READ_WRITE);doAppendMessage(msg,f);6、系统测试本系统测试,只要测试该系统的五个模块即可。1 .登录和注销模块的测试:基于JavaMail的电子邮件管理系统重置图1邮件登录的初始界面基

56、于JavaMai1的电子邮件管理系统收件箱邮件夹写信注销文件夹蓿息总数未读邮件收件箱10废件箱00发件箱20草稿箱00文件操作选择操作:1创建文件V选择文件夹二厂n文件名:|提交图2邮件登录成功后进入的界面基于JavaMail的电子邮件管理系统登录失败.请检查服务器地址,用户名和密弱是否正确图3邮件登录失败后显示的信息注销完成,fangyouxuan!重新瞽录图4系统注销后界面2 .邮件发送模块的测试:a.般的发送测试:收件人地址:c»抄送:一一曙送:_主题:第封邮件发给fanjie*叫dogiLwon的第一封邮件.o存草槁发送r¥in图5用户发送邮件时的界面收件箱邮件夹写信注销成功发送到f3n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论