基于JavaMail的邮件收发系统的开发_第1页
基于JavaMail的邮件收发系统的开发_第2页
基于JavaMail的邮件收发系统的开发_第3页
基于JavaMail的邮件收发系统的开发_第4页
基于JavaMail的邮件收发系统的开发_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、力c大f本科毕业论文基于JavaMail的邮件收发系统的开发BasedontheprogramdevelopmentforsendingandreceivingJavaemail姓名:学号:学院:软件学院系:软件工程专业:软件工程年级:指导教师:摘要随着计算机网络的发展,电子邮件以其快速、便利、成本低等优势已成为人们生活中不可或缺的一部分,使人与人之间信息传输的时间大为缩短。电子邮件(E-mail)就是通过Internet或者Intranet网络从某一终端机输入并通过邮件服务器传送到另一终端的信件、便条、文件、图片或声音等信息。通过模拟邮政系统的“投递存储转发”运作,可以将电子邮件从用户的电子

2、邮箱经由两级服务器发送到目的地主机的电子邮件信箱,实现通讯目的。与传统邮件相比,电子邮件的优点是显而易见的:既减少了人力物力的消耗,节省了社会资源;又节约了时间,极大的提高了工作效率。电子邮件在全球范围内几乎可以忽略空间距离,达到收发的同步性,而与同样提供实时通讯的和相比,电子邮件所需的费用极低。正因为如此,比起Internet的其他功能,电子邮件从一开始就更容易被接受和使用,以其方便、快捷、经济等特点受到了网民的极大青睐。作为网络中最早发展起来的部分,电子邮件的功能也最为强大,已成为目前网络上用户最广泛,使用频率最高的一种应用,甚至是人们上网的第一需求。基于课题的关系,本文先对与邮件发送和接

3、收程序开发密切相关的协议如SMTPPOP3协议作了个系统而全面的阐述,在了解了协议的工作原理后根据目前网络编程技术选择了Java和Jsp作为开发平台,接着根据软件工程学方法的指导下实现了具有简单的收发功能的邮件客户端系统,最后对该系统作了客观的评价并指明了系统的现实意义、缺点以及系统的优化方案。关键词:电子邮件;JavaMail;网络编程AbstractWiththedevelopmentofinternet,theemailhasbecomenecessaryinpeopleslifebecauseofitsownadvantages,suchasrapidity,conveniencean

4、dlow-costetc.Ithasshortenedtheinformationtransmissionamongpeople.E-mailistheletters,messages,documents,picturesorsoundsthatinputfromoneterminalandoutputfromanotherterminalthroughtheInternetorIntranet.Basedonimitatingthepostalsystem,mail-memory-transmitoperation,wecouldsendtheusersemailtothetargethos

5、tcomputerthroughtwo-gradesevers.Comparewiththetraditionalemail,theadvantagesoftheemailareobvious,whichdecreasethedrainonmanpowerandmaterialresources,savesocialresourceandtime,thus,improvetheworkingefficiency.Wecouldalmostignorethespacedistanceintheworldwhenweusetheemail.Thepriceislowerthanweusethete

6、lephoneorfaxtosendthemessage.Comparedwiththeotherfunctionsofinternet,emailiseasilyacceptedandusedbypeoplebecauseofitsconvenience,rapidityandeconomical.Emailisthefirstdevelopmentininternetanditsfunctionispowerful.Ithaswidelyusedinpeopleslifeandbecomenecessarywhenpeoplesurfintheinternet.Accordingtothe

7、subject,thepassagehasfullyexplainedtherelevantagreementsbetweenmailsendingandreceivingprogramsuchasSMTP,POP3etc.Whenwegettheoperationalprincipleoftheagreement,wechooseJAVAandJSPasthedevelopmentplatformbasedonthepresentinternetprogramtechnology.Itcouldreceiveandsendemailaccordingtothesoftwareprojectm

8、ethod.Intheendingpartofthepassage,wemakeexternalcommentsforthesystemandpointouttherealisticsignificance,disadvantageandthesystemoptimizedschemeforthesystem.KeyWords:E-mail;JavaMail;ProgrammingForInternet TOC o 1-5 h z 第一章项目概述1.项目背景简介1 HYPERLINK l bookmark11 o Current Document 应用系统开发理论基础1JavaMailAPI的

9、介绍1JavaMail的体系结构1E-mail协议的概述3JavaMail的核心成员5JSP技术的概述6Web邮件系统架构7第二章系统需求与分析9系统的开发背景及其功能9 HYPERLINK l bookmark16 o Current Document 系统目标9 HYPERLINK l bookmark18 o Current Document 系统可行性研究9 HYPERLINK l bookmark20 o Current Document 需求分析10需求分析的任务10系统功能分析11性能的需求11系统的数据需求12 HYPERLINK l bookmark22 o Current

10、Document 第三章系统详细设计与模块实现13 HYPERLINK l bookmark24 o Current Document 系统功能模块图与说明13 HYPERLINK l bookmark26 o Current Document 系统详细设计15邮件服务器的连接15发送邮件模块的设计15接收邮件模块的设计16邮件回复模块的设计17邮件删除模块的设计18第四章系统测设和评价21系统测试21测试方法21系统的测试21 HYPERLINK l bookmark43 o Current Document 系统评价25系统的优点25系统的缺点25系统的优化25第五章总结与展望26总结26

11、 HYPERLINK l bookmark48 o Current Document 展望26参考文献:27致谢29Contents TOC o 1-5 h z ProjectSummary1Projectbackground1Theoreticalbasisforthedevelopment1JavaMailAPIIntroduction1JavaMailArchitecture1E-mailAgreementOverview3JavaMail5JSPOverview6WebmailSystemArchitecture7SystemRequirementsandAnalysis9Develo

12、pmentandfunctionofthebackground9SystemTarget9FeasibilityStudy9NeedsAnalysis10MissionneedsAnalysis10SystemFunctionalAnalysis11PerformanceRequirements11DataNeeds12DesignandModules13SystemFunctionModuleMapandDescription13TheDetailedDesign15MailServerConnection15SendE-mailModule15ReceiveE-mailModule16E-

13、mailReplytotheDesignofModules17DeleteE-mailModule18SystemTestingandReview21 TOC o 1-5 h z SystemTesting21TestMethod21Systemtest21SystematicReview25Systemadvantages25Systemshortcomings25SystemOptimization25SummaryandOutlook26Summary26Outlook26References27Thanks29第一章项目概述1.1项目背景简介21世纪是网络飞速发民展的时候,电子邮件已经

14、成为热闹话题.随着网络技术的不断发民,网络应用已经渗透到人类社会的各个角落.作为网络世界信息传输的支撑点的电子邮件,更是人们关注的焦点,通过电子邮件无论朋友在何方,都可以通过电子邮件方便的联系交流,电子邮件开辟了网络世界里的一片天地。电脑的日益普及,大大改变了各行各业的工作方式和人们的生活方式,越来越多的人开始进入到电脑的世界。电脑的普及化,进而促进了互联网的进一步的发展和完善,而作为互联网上基本的存在电子邮件系统给予了上网的电脑用户另一个别样的空间。电子邮件的出现是为了方便我们的生活,我们可以不出家门就可以得到我门想要的东西,它的发展使人们获取信息,交流信息显得更方便了,随着互联网的快速发展

15、,满足广大互联网用户的商业信息交易和日常办公需要,电子邮件得到了最广泛的应用,能完成简单操作邮件客户端软件开发具有时代性的意义。下面将分章节说明了在SMT对PO将网络协议研究报告和邮件客户端系统的详细设计过程。1.2应用系统开发理论基础JavaMailAPI的介绍Sun公司提供的JavaMailAPI是Java的标准扩展,是一种可选的,能用于读取、编写和发送电子消息的包。使用JavaMailAPI开发包可以方便地创建邮件用户代理(MailUserAgent,MUA)类型的程序,类似于FoxMail,MicrosoftOutlook这些邮件程序。JavaMailAPI开发包的主要目的是类似发送邮

16、件或其他邮件传输代理类型的程序那样用于传输、发送和转发消息。用户可以与MUA类型的程序交互,以阅读和撰写电子邮件。JavaMailAPI的设计为邮件的收发信息提供与协议无关的访问。JavaMail的体系结构JavaMailAPI是Sun公司提供的一个独立于平台和协议的收发邮件框架,带有Sun实现的SMTP,IMAP东口POP3B议提供程序。另外JavaMailAPI还需要JavaBeansActivationFramework(JAF,JavaBeans激活框架),JavaBeans激活框架提供MIME邮件消息的处理支持。主要用于处理附件,与JavaMailAPI一起,可以实现构造,传输及管理

17、邮件的应用程序,是开发邮件程序必不可少的部分。使用JavaMailAPI编程时,应将Mail.jar和Activation.jar文件添加到类路径环境变量CLASSPATHoJavaMailAPI结构框架如图1.1所示。图1.1JavaMailAPI的结构框架JavaMailAPI提供基本的邮件系统的对象,比如消息,地址和头文件等。主要包括Javax.Mail包及其及包。Javax.Mail提供邮件处理的基本类。Javax.Mail.Event定义和邮件客户相关的事件。Javax.Mail.Internet提供处理邮件头有关的类和接口,支持当前绝大多数的主流邮件协议,包括SMTP、POP3、I

18、MAP4等协议。Javax.Mail.Search提供邮件查找有关的类。构成JavaMailAPI核心的类包括:会话(Session类),消息(Message类),地址(Address类),认证(Authenticator类),传输(Transport类),存储(Store类)和文件夹(Folder类)。所以这些类都可以在JavaMailAPI即Javax.Mail的顶包中找到,使用的子类可在Javax.Mail.Internet包中找至I,由它们可以组成多种典型号的邮件系统E-mail协议的概述对一般的电子邮件使用者来说,E-mail非常简单地执行邮件传输,但是对于编程人员来讲E-mail的

19、打包,传输,发送和接收是很复杂的。这要涉及到很多的协议,主要有发送电子邮件的SMTP协议、用来接收电子邮件的POP3协议和Internet邮件访问协议IMAP以及多用途Internet邮件扩充协议MIME。Sun公司的JavaMailAPI包定了这样一组接抽象类和接口,通过Java应用程序支持邮件系统。它封装了电子邮件的基本协议,编程人员可以不用自己去处理那些复杂的协议。SMTP协议的介绍简单邮件传输协议(SimpleMailTransferProtocal,SMTP是用于传送电子邮件的机制,是为了保证电子邮件的可靠和高效传送,它通对TCP/IP网络把消息从一个邮件服务器移到其它邮件服务器(见

20、图1.2)。SMTP勺一重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。SMTP1Internet电子邮件服务的基本,它工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。因为SMTP是个请求/响应协议,在TCP上,它使用端口25进行传输,将消息转发给用做接收消息的SMTPR务器,最后用户可通过POP|IMAP协获取该消息。SMTP的工作机制SMTP1常有两种工作模式:发送SMTPF口接收SMTP具体工作方式为:发送SMTP在接到用户的邮件请求后,判断此邮件是否为本地邮件,若是直接投送到用户的邮箱,否则向DNSS询远端邮彳服

21、务器的MXE录,并建立与远端接收SMTP之间的一个双向传送通道,止匕后SMT腌令由发送SMTPg出,由接收SMTPg收,而应答则反方面传送。一旦传送通道建立,SMTPg送者发送MAIL命令指明邮件发送者。如果SMTP收者可以接U邮件则返回OK应答。SMTPg送者再发出RCPT命令确认邮件是否接收到。如果SMTP收者接收,则返回OKB答;如果不能接收到,则发出拒绝接收应答(但不会中止整个邮件操作),双方将如此重复多次。当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,返回OK应答。3.连接和发送过程(1)建立TCP接;(2)客户端发送HELO0T令以标识发件人自己的身份,然后客

22、户端发送MAIL命令行服务器端正希望以OK作为响应,表明准备接收;(3)客户端发送RCP怖令,以标识该电子邮件的计划接收人,可以有多个RCPT行服务器端则表示是否愿意为收件人接受邮件;(4)协商结束,发送邮件,用命令DATA送;(5);(6)结束此次发送,用QUIT命令退出。现在绝大多数的SMTF务器需要微分验证。由于SMTPfc持微分验证,所以不需要SMTF务器是一种开放的转发器,但需要确保SMTF务器配置正确。邮件服务器邮件服务器图1.2邮件发送POP3协议介绍POP(邮局协议)是个非常简单,功能非常有限的邮件读取协议。邮局协议最初公布于1984年RFC918,经过多次更新,现在使用最广泛

23、的就是POP3RFC2449,POPfe使用在客户服务器的工作方式,在接收邮件的客户的PC机上必须运行PO哈户程序,而在客户连接的服务器上则运行POF务器程序,而且在这个邮件服务器上也必须得运行SMTP件服务程序,这样就可以接收发送方邮件服务器的SMTPg户程序发来的邮件了。另外POP服务器只有在用户输入鉴别信息后才被允许对邮箱进行取。由于POP?口SMTP-样者B是工作于C/S模式,所以它也存在一个会话的过程,并且它的会话过程和SMTP勺会话过程大同小异,通信的过程中的数据都是以文本的形式传输的(包括各类命令),所谓的异同的地方就是POP3勺响应码只有+OK或-ERR它们分别表示请求成功和失

24、败POP3协议的工作机制POP/户向POP锹务器发送命令并等待响应,POP骑令采用命令行形式,用ASCII码表示。服务器响应是由一个单独的命令行组成,或多个命令行组成,响应第一行以ASCII文本+OK或-ERR指出相应的操作状态是成功还是失败。当客户机与服务器连接并查询新电子邮件时,被该客户机指定的所有将被下载的邮件都将被程序下载到客户机,下载后,电子邮件客户机就可以删除或修改任意邮件,而无需与电子邮件服务器进一步交互。在POP3&议中有三种状态,认可状态,处理状态,和更新状态。当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发

25、出quit命令,则进入更新状态,更新之后最后重返认可状态(如图1.3)。图1.3POP3协议状态转换等待连接身份确认Quit命令重返认可状态。JavaMail的核心成员构成JavaMail的核心类包括会话,消息,地址,身份验证,传输,存储和文件夹。这些类均可以在JavaMailAPI,Javax.Mail的顶层包中找到。下面就上述的这些类进行详细的说明。会话类(Session)Session类定义了一个基本的邮件会话。通过会该会话使得各种工作顺利执行。Session对象利用Java.Util.Properties对像获取邮件服务器,用户,密码等信息,以及其他的可在整个应用程序中共享的信息。而且

26、Session类的构造器是私有的,但可以获得一个可被GetDefaultInstance()方法共享的单一的默认会话。消息类(Message在创建了Session对象之后,接下来是创建消息对象。在大多数情况下,使用ernet.MimeMessage对象。一个MimeMessage对象是一种MIME类型和报头的消息,所以消息的报头被严格限制为只使用US-ASCII实际字符。一旦创建了消息,就可以设置消息的各个部分,如Message循息)实现Part(部分)接口。设置内容的基本机制是setContent(方法,它带有表示内容和MIME类型的参数,但是如果正在使用MimeMessage,并且消息是纯

27、文本的,那么就可以使用setText()方法,对于纯文本消息,setText()方法更常常被用来设置内容。消息类(Address)一旦创建了会话和消息,并为消息填充了内容,就需要用Address类为信件标上地址。Addrss类是一种抽象类,可以从ernet.InternetAddress类派生子类。要创建只带有有子邮件地址的地址,可以把电子邮件地址传递给Address类的构造器。如果为要消息的from(发送者)字段to(接收者)字段创建地址对象,就要在发送消息的消息中注明该消息的发送者。在消息类中有两种方法可以将地址与消息连接起来:SetFrom(刑SetReplyTo()方法。身份验证类(A

28、uthenticatior)与Java.Net类一样,JavaMailAPI可以利用Authenticatior(验证程序)类,通过用户名和密码来访问受保护的资源。对于JavaMailAPI来说,这种受保护的资源是指邮件服务器。JavaMail的Authenticator类可以在Javax.Mail包中找到,并有别于同名的Java.Net类。当JavaMailAPI在Java1.1下工作时,JavaMail和J不会共享同一个Authenticator类名称,这是因为Java1.1中不含有Java.Net。要使用Authenticator类可以使用该抽象类的子类,并通过GetPasswordAu

29、thnetication()7!r法返回一个PasswordAuthnetication实例。传输类(Transport)发送消息的最后一步是使用传输类。该类使用特定于协议(通宵是SMTP)的语方言来发送消息。它是一个抽象类,操作与Session类相似。用户可以通过调用静态的send()方法来使用该类的默认版本,或者可以从用于协议的会话中获取一个特定实例,然后传递用户名和密码并发送消息,最后关闭连接。JSP技术的概述在这里我要用到的技术是JSP(JavaServerPages)与ASP很相似,两者最主要的区别在于在JSP中,%和%之间嵌入的代码只能是Java,而不是VBScript和JavaS

30、cript这类脚本语言,按照SUN司的说法,JSP能够适应市场上85%勺服务器产品,如ApacheWebServer以及Microsoft的IIS等。JSP所带来的丰富的特性以及强大的发展潜力意味着JSP必将成为WE褊程领域的强大的竞争者。JSP基本上是使用Java编程,Java具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库与网络应用程序的杰出语言。JSP页面被转换成Servlet后,原来的整个文档被转换成Java代码,即不存在%和%标记,当用户并发请求JSP页面时,系统通过多个线程来响应这些请求,与CGI为每个用户请求创建完整的进程相比,用线程响应用户的请求具有高

31、得多的效率。因为JSP能适应市场上85%的服务器产品,由于它的平台无关性,所以它更是能够稳定的运行于各种流行的操作系统上。Web邮件系统架构早期系统设计的模型是基于C/S(Clinet/Server)2层结构的。它的结构简单,开发和运行的环境也较简单。在这种结构下,系统拓展性和安装维护性差,同时大量代码驻留在客户机上,系统存在很大的安全性问题。B/S(Browser/Server)结构是早期的C/S结构发展而来的3层C/S结构在Web上的应用。它将数据处理过程分为3层:第1层是示层(用户界面,又可细分为表示层和表示逻辑层),提供用户与系统的友好访问,各种Web引擎(如ASP、PHP、JSP等)

32、都属于这一层;第2层是应用逻辑层,又称中间层,负责处理表示层的应用请求,完成商务逻辑的计算任务,并将处理结果返回给用户;第3层是数据服务层,为应用提供数据来源,保证数据的低冗余,结构性,完整性和一致性。系统采用了JavaMailAPI和JSP相结合的方法,构成了系统的1个3层B/S结构。用户接收和发送邮件只需要通过浏览网面就可实现。后台Java应用程序介于一个邮件服务器和交互的Web应用服务器之间,负责邮件的发送和接收以及邮件的管理,属于应用逻辑层。用户可以访问在JSP引擎中的JSP页面产生的Web页面。属于数据服务层的邮件服务器存储用户所有的邮件和相关资料,后台的数据库主要存储用户的有关资料

33、。表示层(表不层)Web浏览器数据服务层(表示逻辑层)Web服务器JSP引擎邮件服务器U一二数据库图1.4系统构架第二章系统需求与分析系统的开发背景及其功能在我国互联网的广泛应用主要是从上个世纪九十年代开始的,E-mail这词也是从这个时代被中国人所了解,同时它也是Internet上最早使用的服务之一。世界上第一封电子邮件是由计算机科学家伦纳德克兰罗克(LeonardKleinrock)教授发给他同事的一条简短消息。在1987年9月20日,北京计算机应用技术研究所研究员钱天白发出中国第一封电子邮件:“AcrosstheGreatWall,wecanreacheverycornerinthewo

34、rld.”。随着计算机网络的迅速发展,电子邮件已成为Internet上最为普及的应用之一。无论是在人们的日常工作生活还是在企业部门之间的交流中,电子邮件己经成为人们互相传递信息的重要手段,可以说和我们的生活和工作是密不可分的了。目前应用最为广泛的邮件客户端软件可以说是微软公司的OutlookExpress与个人开发版的FoxMail两个了;它们不但都具有人性化美观的用户界面,而且的操作的简单方便、,功能强大,满足的各类用户的需求。针对本课题所研究的内容为SMT环口POP议以及邮件客户端主要实现简单邮件的收发功能,所以本文在参照OutlookExpress的实现原理的前提下开发了一个邮件客户端,

35、它主要的功能是集待发邮件内容的编写,发送和在线连接邮件服务进行邮件的查看阅读以及对邮件的各种操作为一体的客户端系统软件。系统目标本邮件客户端系统主要能够满足日益的互联网网民的收发邮件等基本功能,在设置好客户端的POPW件服务器后,同时输入邮箱的用户名和密码,进入到自己的邮箱。可以根据用户的需要选项择编辑信件并直接发送到邮件服务器(目的地址),或是查看信件,通过邮件接收客户端接收指定邮箱的邮件,读取邮件,查看邮件以及其他的一些对邮件的操作,同时还提供了对附件发送的支持功能。为了实现用户操作的方便易用性,系统界面设计简单明了,普通电脑用户也能进行操作。系统可行性研究可行性研究的目的使用最小的代价在

36、尽可能短的时间里确定问题是否能解决,可行性研究可以说是个大大压缩简化了的系统的分析与设计的过程,同样也可以说成是在较高的层次上以较抽象的方式进行的系统分析与设计的过程。通过复查系统的规模与目标,研究与此类似的系统后,才能更好的分析设计该系统,我们具体从下面几个方面考虑。技术上的可行性对于该系统的实现在技术上是完全可行的,由于现在中外在SMTPPOP?有关邮件传输方面的协议研究都十分成熟了,在网络软件开发技术方面也是比较成熟的了,而且Java开发平台对JavaMail提供了可以供程序开发人员直接利用的类库等,提供开发效率同时也优化了软件代码使程序代码更健壮。同时基于SMTP与POPft、议开发的

37、各类邮件客户端系统也很多了,比如OutLookExpress,所以在开发技术方面是完全可行的。经济上的可行性由于该系统涉及面比较少而且作为个人开发小项目,对于在经济上几乎不需要什么开销,所以在经济上是完全可行的。操作的可行性由于系统是在Windows环境下用Java和Jsp开发的,只需要通过浏览器就可使用的软件系统,在界面上完全易用,普通电脑网民都能轻易掌握使用。法律、社会效益等的可行性由于这个系统是个人独立开发,在技术上没有使用任何其他软件与方法。所以在法律方面不会在侵犯专利权、侵犯版权等问题,在法律和社会效益上是完全可以行的。4需求分析需求分析的任务需求分析是发现,求精,建模,规格说明和复

38、审的过程。具体地讲包括需求获取,需求分析,需求描述,需求评审。这个阶段的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成那些工作,也就是对目标系统在功能,性能和运行环境等方面提出完整,准确,清晰,具体地的要求。这个阶段的另外一项重要任务,是用正式文档准确地记录对目标系统的要求,这份文档通常称为规格说明(Specification)。对系统初步分析,在了解系统所要现实的基本功能后,把目前作业的难度,充分地进行考虑。在清楚系统的需求后发现,这一项不困难,但却很重要,而且是有明显效益的需求,在评估人力,时间,财力后,给予可行的响应了。虑到本系统并不会太困难,而且在人力的调配上也允许的情况

39、下,决定自行开发这套信息系统,这样做的另外一个好处是确保完整的自主性。系统开发不是一个人来完成,时间上是有可能的,但不被允许,所以成立一个开发小组,然后做下来一起展开讨论,制定一套最简单,也最有效的方式,就是把想得到的结果,或期望的功能一一列出来,然后再望源头推论,看是否有足够的数据来提供给结果使用,就能订出哪些项目可以列入系统框架中,或哪些是源头需增加的部分,业务单位把他们的需求列出一份清单,与信息单位讨论是否可行。系统功能分析这里我所做的毕业设计是邮件收发系统,所以下面章节中所有的内容都围绕邮件的收发来展开。系统主要应具有以下功能:邮件服务器的配置:由于此系统需要在用户输入邮箱用户名和密码

40、的同时需要对邮件读取协议进行设置,即设置POP协议。比如,用户用的163的邮箱,那么就将POP设置成163.。只要设置好此协议基础上才能正确地接邮箱并进行后继的对邮件的操作。邮件的查看:当用户进入到自己的邮箱后,可以按照自己的意愿对邮箱的中的邮件进行查看。如果该邮件还有附件,还可以将附件也一并查看。发送邮件:进入到邮箱后,如果用户需要发送邮件,只需在邮件编辑器中将邮件写好,并按发送则可成功地将邮件发送到目的地址,如果有附件也可以一并发送。邮件的过虑功能:如果用户不想看到在主题中含有某些字的邮件或是某些地址发过来的邮件,则可以通过此功能将那些不想看到邮件屏蔽掉。性能的需求性能需求主要是指系统必须

41、满足的定时约束或容量约束,通常包括速度(响应时间),信息两速度,安全性等方面的要求。由于该系统属于网络软件系统,在程序的响应时间上在很大部分取决于网络的带宽速度问题,而且还得看处理的数据量多少来决定,在网络畅通,网络正常的话,该系统在收发邮件的响应时间上是可以满足一般用户的需求的。而且该系统是使用JSP在WindowsXp系统下完成的所以只要兼容Windows的软件系统或操作系统,该软件都可以正常运行使用,在性能和使用性方面都能满足使用需求。系统的数据需求任何一个软件系统本质上都是个信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌;由于该邮件客户端对数据的操作主

42、要是以文本文件的形式通过对邮箱服务器的数据进行操作的,所以在数据的设计与需求方面没多大的要求。第三章系统详细设计与模块实现详细设计阶段的任务就是把解法具体化,也就是回答应该怎样具体地实现这个系统这个关键问题。详细设计也称为模块设计,物理设计或低层设计。过程设计应该在数据设计,体系结构设计和接口设计完成之后进行,它是详细设计阶段应该完成的主要任务。这个阶段的任务还不是具体地编写程序,而是设计出程序的“蓝图”以后程序员将根据这个蓝图写出实际的程序代码。从本章节开始,我们开始将实现邮件收发系统的详细设计,系统架构设计随着计算机网络技术,特别是Internet技术的迅速发展,基于浏览器/服务器(Bro

43、wser/Server)t奠式的计算环境为越来越多的应用系统所采用系统数据流图来实现。B/S模式的主要的特点在于应用系统开发人员无需开发自己的客户端软件,而统一采用浏览器来实现客户端与服务器的交互1.B/S模式具有跨平台的特点,给系统的开发和使用带来了方便,同时,B/S模式的另一个优点在于,当需要对应用系统进行升级时,只需对服务器端的应用程序进行升级2.在本系统中,采用B/S模式来实现数据库的操作。系统功能模块图与说明在需求分析阶段我们明确了系统所需要实现的功能,通过将功能模块化的分析后,得到如图3.1所示的功能模块结构图。首先,无论是发送邮件还是接收邮件,都必须先设置邮件服务器以连接目的服务

44、器,在这里需要用到Storestore=recesession.getStore(pop3)创建一个Store对象,并根据得到的三个参数连接到邮件服务器中的用户邮箱。在接收邮件模块中,在接收邮件模块中,分为显示邮箱中E-mail列表和阅读E-mail内容两部分。通常我们在收取E-mail的时候,先要让用户名和密码通过邮件服务器的验证,然后进入一个显示当前所有E-mail列表的页面,点击其中某个E-mail的链接即可查看此E-mail的正文内容。当用户的邮件箱的邮件过多或是不再需要某些邮件时,用户可以将那些不再需要的邮件删除掉。在系统中利用Message对象中的Setflsg()方法,将邮件设置

45、删除标志,放到“我的回收站中”,然后返回到邮件列表。邮件收发系统图3.1功能模块结构图通过回复邮件模块,在用户阅读完邮件后,可以方便快捷地实现邮件的回复。不必返回到系统的发送邮件模块就可以完成邮件的回复并发送工作。查看上一封邮件与查看下一封邮件模块,可以在不返回邮件列表的情况下,用户方便地阅读当前邮件的上一封或者下一封邮件。在阅读完邮件时,用户能过“返回邮件列表”按钮,快速地返回到邮件列表。在发送邮件模块中,要发送E-mail需要先给用户提供一个用于发送E-mail的HTML表单,在表单中填写发件人的地址,收件人的地址,E-mail标题和内容。在填写完表单后,其内容将被提交到发送邮件的Jsp页

46、面中。在发送邮件页面中创建MimeMessage等相关对象,对邮件进行种操作,再用Transport来发送邮件,然后调用其方法论Connect连接到邮件服务器,最后要Send方法将E-mail发送出去。因为通常用于发送E-mail的SMTP邮件服务器需要权限认证,只允许合法的用户通过它发送E-mail,所以在此模块中必须要进行用户的合法性验证。如果用户需要发送带有附件邮件,在JavaMail中提供了发送附件的功能,在发送附件时,先建立代表E-mail正文部分的BodyPart对象,并把它加到Multipart对象中去,然后建立代表E-mail附件部分的BodyPart对象用SetDataHan

47、dler方法将获取到的附件包含进来。退出模块是关闭和邮件服务器的连接,并退出系统返回到主页面。系统详细设计由于该系统是利用Sun公司提供的JavaMailAPI进行开发,即主要通过Java类的构造以及借助Jsp的平台来处理和实现各功能。邮件服务器的连接电子邮件系统的无论是邮件的发送还是邮件的接收,首先都需要连接到邮件服务器上才进行对邮件的操作。要发送或者接收邮件,用户都必须先登录到邮箱服务器上,先给出一个填写POP服务器、用户名和密码的HTM送单。在填写完以上信息后点击“登录”按扭连接邮箱服务器。首先,利用Properties类创建一个Props对象,用Session对象的GetInstanc

48、e方法设置会话属性。然后再创建一个Strore对象,并根据HTM送单提供的三个参数连接到邮件服务器中的用户邮件;因为在后面的操作中会用到该页面中得到的信息,所以先将三个参数放到Session中保存起来,供后面的页面继续使用。如果在登录时连接不上邮箱服务器,则显示“登陆邮件服务器失败”并返回登录页面;如果登录成功,则进入到邮件的操作页面。发送邮件模块的设计首先用Session类建立一个基本的邮件会话过程。用Java.util.Properties对象为Session对象配置邮件的环境属性,然后利用Properties对象来获取邮件服务器,用户名和密码等信息,以及其它可在整个应用程序中共享的信息。

49、再用Properties对象的Put方法设置SMTP,邮件服务器主机属性(Mail.Smtp.Host)。设置好邮件服务器后,创建一个Session对象Sendsession然后Session对象Sendsessio论勺GetInstance方获取到邮件的这些信息。在创建了邮件会话Session后,再用Message类提供一封E-mail的所有信息。因为Message是一个抽象类,因此必须由其子类来构造,利用当前的Session对象来创建一个新MimeMessage对象MimeMessagemessage=newMimemessage(sendsession)g成这些以后接下来就需要设置邮件的

50、发送地址和接收方地址信息了,在这里利用JavaMail提供的InternetAddress类。用早已创建好的Message对象的SetFrom来设置发件人的地址;同样用Message对象的SetRecipient方法业设置收件人的地址。同理,用Message对象的SetRecipient,SetSubject,SetSentDate,SetText方法分别设置邮件的抄送地址,邮件的主题,邮件的发送时间和邮件的内容。如果发送的邮件还有附件则需要用到JavaMail和JAF提供的BodyPart类来创建一个BodyPart对象MessageBodyPart,BodyPartMessageBodyP

51、art=newMimeBodyPart()。通常E-mail的正文是一个BodyPart对象,附件则是另一个BodyPart对象。先建立代表E-mail正文部分的BodyPart对象,并把它加到Multipart对象中去,然后建立代表E-mail附件部分的BodyPart对象,建立DataSource对象用获取附件,再用MessageBodyPart对象的SetDataHandler方法将获取到的附件包含进来。用MessageBodyPart对象的SetFileName方法设置附件文件名。在将与附件相关的内容设置好之后,把代表附件部分的BodyPart对象加到Multipart对象中。做完这以

52、后就可以发送邮件了,用Transpotr对象的Connect方法连接到SMTP务器,连接到以后再用SendMessag防法将邮件内容和附件一起发送到目标地址了。到此,整个发送邮件模块设计基本完成。接收邮件模块的设计JavaMail很好地支持了对E-mail的接收操作,这只需要相关的几个类就能实现对E-mail接收操作。要接收E-mail首先需要先给用户提供一个登录邮件服务器的HTM送单,表单中填写邮件服务器名、,用户名和密码。在填表写完此表单后,将其内容提交到接收E-mail的硬页面中。在接收E-mail页面中,首先连接到邮件服务器上的一个邮箱,这就需要调用Session对象的GetStroe

53、方法来创建一个Stroe对象,通常将所使用的协议设置为POP3并根据HTML1单的内容得到三个参数,使用Store对象的Connect方法连接到邮件服务器的中的用户邮箱。在连接到邮箱之后,利用Store对象的GetFolder方法创建一个Folder对象作为一个消息文件夹。又因为POP勖议只支持唯一的消息文件夹INBOX,所以在方法GetFolder中参数设为“INBOX”。再使用Folder类的Open方法来打开消息文件夹,定义一个常数Count以统计邮箱中E-mail的总数。在邮箱中,可能不希望带有某些关键字或某些邮件地址发来的E-mail出现在我们的邮箱列表中。这我们可以SearchTe

54、rm类提供的功能的设置其过滤规则,再将符合过滤规则的E-mail设置删除标志,以使其不显示在邮件列表中。在邮件接收中,同样也需要用到Message类中的一些方法。首先用Message类所提供的IsSet方法来判断一封E-mail是否被标记为删除(DELETED如果没有则用Message提供的GetSubject方法得到E-mail的标题;Message的getSentDate方法得到发送E-mail的时间;Message白GetSize方法得到E-mail的大小。利用一个循环将用户邮箱的所有符合条件的E-mail都显示出来。最后可以用Folder对象的Close方法关闭邮箱和服务器的连接。阅读

55、E-mail,当邮箱用户需要查看某E-mail的内容时,只需在邮件列表中点击E-mail的主题就可以查看阅读E-mail的内容。根据当前E-mail所在的邮箱类型(收件箱或是回收站)得到要阅读的E-mail的编号Msg,即要看第几封E-mail。根据Session对象得到邮件服务器要验证的参数,并根据得到参数连接到邮件服务器中的用户邮箱。和得到邮件列表一样,也需要在连接到邮箱之后,利用Store对象的GetFolder方法创建一个Folder对象作为一个消息文件夹,并打开消息文件夹。在这里需要使用到Address类,创建一个Address对象数组,用Message对象的GetFrom方法得到发

56、件人的地址,并将其赋给Address对象数组,如果Address对象数组不为空则显示发件人的地址;定义一个Date对象,并将Message对象的方法GetSentDate得到E-mail发送时间赋给它;使用Message对象的GetSubject方法得到E-mail的主题。如果E-mail中含有附件的话,则先Message对象的IsMimeType方法判断该E-mail是否是一个多部分内容的E-mail,如果是的话,就表明该E-mail带有附件,先用Message对象的GetContent方法获得代表该E-mail的多部分内容的Multipart对象;然后依次获取Multipart对象的每个部

57、分,并用方法GetDisposition获得该部分的属性。如果该部分的属性是Part.ATTACHMENT或Part.INLINE,就表明它是附件的内容;如果该部分属性为null,就表明它是普通文本内容。又因为附件是需要下载的,在下载时应先设置附件的类型属性,并生成下载的头信息。然后设置下载过程中的输入流和输出流,为下载附件做好准备工作,最后就可以执行下载工作。邮件回复模块的设计当邮箱用户在阅读完E-mail后,如果需要回复此E-mail时,用户只需要点击“回复”按钮进入到邮件回复的页面。在此页面中,利用Message对象的GetFrom方法得到发送地址。这个模块只是在发送邮件模块的基础上增加

58、了一个自动得到收件人地址的功能,其发送邮件的设计是上面所述的发送邮件模块是一样的。邮件删除模块的设计在用户的邮箱中,如果用户觉得某些E-mail是不再需要了的,认为可以删除掉的E-mail。用户只需在阅读E-mail后,按“删除”按钮就可以将该E-mail删除。删除模块的具体设计是,首先根据邮件列表页面得到该E-mail的序列号。用Message类创建一个Msg对象,通过Session对象的方法GetSubject得到该E-mail的主题属性,并赋给Msg对象。再用Msg对象的SetFlag方法设置为待删除标志,并返回到邮件列表页面,在该页面中将不出现被删除的邮件列表。33系统的实现由于此系统

59、的各个模块的的设计都在前面进行了详细的说明,所以这里只给出发送部分核心的模块代码:Sendmail.jsp:发送E-mail,如果有附件,也能一并发送。try/获得属性,并生成Session对象Propertiesprops=newProperties();Sessionsendsession;Transporttransport;sendsession=Session.getInstance(props,null);/向属性中写入SMTP服务器的地址props.put(mail.smtp.host,smtp.+host);/设置SMTP服务器需要权限认证props.put(mail.smtp

60、.auth,true);/设置输出调试信息sendsession.setDebug(true);/根据Session生成Message对象Messagemessage=newMimeMessage(sendsession);/设置发信人地址message.setFrom(newInternetAddress(user+host);/设置收信人地址message.setRecipient(Message.RecipientType.TO,newInternetAddress(request.getParameter(to);/设置e-mail标题message.setSubject(newStr

温馨提示

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

评论

0/150

提交评论