毕业设计(论文)-基于javamail的邮件收发管理系统.doc_第1页
毕业设计(论文)-基于javamail的邮件收发管理系统.doc_第2页
毕业设计(论文)-基于javamail的邮件收发管理系统.doc_第3页
毕业设计(论文)-基于javamail的邮件收发管理系统.doc_第4页
毕业设计(论文)-基于javamail的邮件收发管理系统.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

毕业论文说明书基于JAVAMAIL的邮件收发系统设计THEMAILSYSTEMBASEDONJAVAMAILDESIGN学院(部)科信软件学院2008级专业班级计算机科学与技术(网络方向)学生姓名指导教师2012年3月27日I基于JAVAMAIL的邮件收发系统设计摘要众所周知,电子邮件在当今社会上角色之重要,应用之广泛,越来越多的人使用它,可以这样说,电子邮件充斥着我们当今每个人的生活,工作与学习。虽然,现在已经存在很多的邮件服务软件,但是绝大多数对于非专业人员使用起来还是有些难度稍显复杂的,因此我的毕业设计就基于SMTP和POP3两个主要的邮件服务协议从底层开发这个软件。SMTP协议,全称为简单的邮件传输协议,主要用于邮件的发送。POP3协议,全称为邮局协议第三版,主要用于邮件的接收。本次设计是利用J2EESTRUTS框架,JSP,HTML,CSS,JAVASCRIPT等技术来实现一个B/S架构的邮件管理系统。所谓B/S架构即浏览器和服务器的架构(BROSWER发送主机“BY“DOMAIN接收主机“VIA“ATOM物理路径“ID“MSGID接收者MSGID接受字段。是投递信件的特定邮件服务器所作的记录。处理邮件投递的每个服务器必须给它处理的每个信头的前面加一个RECEIVED字段,用以描述信件到达目的地所经过的路径以及相关信息。当跟踪各个电子邮件问题时,这个信息很有帮助。举例RECEIVEDFROMWANG195001BYLI129504TUEDEC2003121802800格式COMMENTSTEXT注释字段。用于把一个注解添加到信件中。格式RESENT举例RESENTFROMRESENTSENDERRESENTDATERESENTREPLYTO重发字段。当需要把收到的信件重发给另一组收信人的时候,可以保持整个原始信件不变,并简单地产生重发信件所要求的新信头字段。为避免与以前的字段相混。新添加的信头字段都加上RESENT前缀字符串,它们的语法与未加前缀的同名字段相同。格式MESSAGEIDMSGID信件标识字段。用于表示一个信件唯一标识,该字段通常有SMTP服务器生成,这个值通常是唯一的。形式根据使用的软件而定。通常左边是标识符,右边指定电脑名表41中的关键字表明了电子邮件借用了办公室备忘录中的概念和术语电子邮件的头部能够包含一行说明应当接收到该备忘录的接收方。象传统的办公室备忘录一样,电子邮件使用关键字CC指明一个复写副本CARBONCOPY电13子邮件软件必须向CC后面的电子邮件地址表中的每个地址发送一份消息的副本。传统的办公室过程要求备忘录的发送方通知接收方副本是否传给其它人。有时发送方希望将备忘录的一个副本给别人而不显示出有一个副本被发送出去。一些电子邮件系统提供这样的选项,遵循传统的办公室术语,用盲复写副本BLINDCARBONCOPY来表示。创建消息的用户在关键字BCC后给出一个电子邮件地址表,指定一个或多个盲复写副本。虽然BCC在发送方出现,但当信息发送时,邮件系统将它从消息中除去。每个接收方必须检查头部的TO和CC行以决定信息是直接发送还是作为盲副本发送的有些邮件系统在正文部分附加信息来告诉接收者它是一个盲副本。其它接收者不知道有哪些用户接收到盲副本。电子邮件使用与传统的办公室备忘录相同的格式和术语头部包括与消息有关的信息,正文包括消息文本。电子邮件头部的行说明发送方、接收方、日期、主题、应当收到副本的人的列表。(1)扩展字段如果想在信头中加入RFC822中没有规定的字段,就需要创建非标准字段。方法非常简单,只要在自定义的信头字段名的前面使用X前缀。RFC822将这种方法称为扩展字段。事实上已经有许多扩展字段被广泛应用,但没有标准定义。例如XLOOP字段XLOOP字段用来防止邮件的循环传送。过滤或邮件列表处理程序,可以给它处理的每个信件增加一个XLOOP字段,以后就可以根据这个字段中含有的特别值,判断一个信件是否被循环传送。如果确认邮件发生了循环,过滤或邮件列表处理程序就可以用不同的方式处理该信件。XMAILER字段XMAILER字段用于指示什么样的程序产生了这个信件,它是使用最广泛的扩展字段。产生邮件的软件可以为所有发送的信件增加合适的XMAILER字段,该字段不仅含有软件的名称,还包含软件的版本号。2普通关键字下表42列出了一些在因特网电子邮件中可以找到的普通关键字,以及它们的含义。表42电子邮件中的关键字关键字含义FROM邮件发送方地址(对应JAVAMAIL的FROM)14TO邮件接收方地址(对应JAVAMAIL的TO)CC需要抄送副本的地址(对应JAVAMAIL的CC)DATE邮件信息创建日期(对应MESSAGE中的DATE)SUBJECT邮件信息主题(对应MESSAGE中的SUBJECT)CONTENT邮件信息内容(对应MESSAGE中的CONTENT)REPLYTO邮件回复地址XCHARSET使用的字符集(通常为ASCII)XMAILER发送信息所使用的软件XSENDER发送方地址的副本XFACE经编码的发送方面孔的图象155重要模块设计51用户登录模块511主要函数说明为了方便用户使用,本邮件收发系统设有两个登陆界面,即一个为本邮件管理系统的登录使用界面,还有一个收取邮件的登录界面,而收取邮件的登录界面,是存在于主功能界面的二级界面,方便收取各个不同邮件服务器的邮件,而不是由一级界面直接登录,所以第二界面登录需要验证POP3协议是否通过,并连接到当前选择的服务器地址。若连接成功,则直接再JSP界面上显示收取到的该邮件服务器的邮件。1)CONNECT函数用于建立与POP3服务器的连接。语法STORECONNECTPOPHOST,USER,PASSWORDCONNECT函数的参数说明如表51所示表51CONNECT参数说明参数说明POP3HOSTNOTNULLPOP3服务器地址USERNAMENOTNULL用户账号PASSWORDNOTNULL用户密码2)CLOSECONNECTCLOSECONNECT用于关闭与POP3服务器的连接。语法CLOSECONNECT。512部分主要代码处理用户登录信息的页面部分代码如下IFUSERNAMEEQUALS“SHUOZHANG“ELSERETURNMAPPINGFINDFORWARD“LOGINFAIL“被处理一级登录界面部分代码用户名1652发送带附件邮件模块发送带附件的EMAIL页面(EDITMAILJSP)首先对接收用户发送的收件人、邮件主题、附件、邮件内容等信息,并获取附件的路径,然后应用SENDTESTMAIL函数创建MIME邮件,最后应用JAVAMAIL中的TRANSPORTSEND函数利用SMTP协议特性将邮件发送出去。下面对发送带附件的EMAIL信息处理页面中所使用的关键的几个类进行介绍。521关键类1)MYAUTHENTICATORJAVA说明邮件验证类语法PUBLICCLASSMYAUTHENTICATOREXTENDSAUTHENTICATORMYAUTHENTICATORJAVA类的参数说明如表54所示。表54IMAP_MAIL_COMPOSE参数说明参数说明USERNAMENOTNULL需要验证的邮件服务器用户名PASSWORDNOTNULL需要验证的邮件服务器密码2)SIMPLEMAILSENDERJAVA类说明发送邮件类其各种参数如下表55所示表55SIMPLEMAILSENDERJAVA参数说明参数说明TONOTNULL收件人地址FORMNOTNULL发件人地址SUBJECTNOTNULL邮件主题MESSAGENOTNULL邮件内容CC可选参数。抄送人地址BCC可选参数。密送人地址DATE可选参数。发送邮件时间17522部分主要代码实现邮件发送类SIMPLEMAILSENDERJAVA代码MYAUTHENTICATORAUTHENTICATORNULLPROPERTIESPROMAILINFOGETPROPERTIESMULTIPARTMULTIPARTNEWMIMEMULTIPARTIFMAILINFOISVALIDATE/如果需要身份认证,则创建一个密码验证器AUTHENTICATORNEWMYAUTHENTICATORMAILINFOGETUSERNAME,MAILINFOGETPASSWORD/根据邮件会话属性和密码验证器构造一个发送邮件的SESSIONSESSIONSENDMAILSESSIONSESSIONGETDEFAULTINSTANCEPRO,AUTHENTICATORTRY/根据SESSION创建一个邮件消息MESSAGEMAILMESSAGENEWMIMEMESSAGESENDMAILSESSION/创建邮件发送者地址ADDRESSFROMNEWINTERNETADDRESSMAILINFOGETFROMADDRESS/设置邮件消息的发送者MAILMESSAGESETFROMFROM/创建邮件的接收者地址,并设置到邮件消息中ADDRESSTONEWINTERNETADDRESSMAILINFOGETTOADDRESSMAILMESSAGESETRECIPIENTMESSAGERECIPIENTTYPETO,TO/设置邮件消息的主题SUNMISCBASE64ENCODERENCNEWSUNMISCBASE64ENCODERMAILMESSAGESETSUBJECT“GB2312B“ENCENCODEMAILINFOGETSUBJECTGETBYTES“STRINGMAILSUBJECTMAILINFOGETSUBJECTTRYMAILMESSAGESETSUBJECTMIMEUTILITYENCODETEXTMAILSUBJECT,“GB2312“,“B“CATCHUNSUPPORTEDENCODINGEXCEPTIONE1/TODOAUTOGENERATEDCATCHBLOCKE1PRINTSTACKTRACE18/设置邮件消息发送的时间MAILMESSAGESETSENTDATENEWDATE/设置邮件消息的主要内容STRINGMAILCONTENTMAILINFOGETCONTENT/对邮件附件的操作IFMAILINFOGETATTACHFILENAMESNULLMIMEBODYPARTMESSAGEBODYPARTNEWMIMEBODYPARTDATASOURCESOURCENEWFILEDATASOURCENEWFILEMAILINFOGETATTACHFILENAMESTOSTRINGMESSAGEBODYPARTSETDATAHANDLERNEWDATAHANDLERSOURCETRYMESSAGEBODYPARTSETFILENAMEMIMEUTILITYENCODETEXTMAILINFOGETATTACHFILENAMESGETNAME,“GB2312“,“B“CATCHUNSUPPORTEDENCODINGEXCEPTIONE/AUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACEMULTIPARTADDBODYPARTMESSAGEBODYPARTMAILMESSAGESETCONTENTMULTIPART/MIMEBODYPARTMESSAGEBODYPARTNEWMIMEBODYPART/设置邮件消息的字符集信息,避免乱码MESSAGEBODYPARTSETCONTENTMAILCONTENT,“TEXT/HTMLCHARSETGB2312“MULTIPARTADDBODYPARTMESSAGEBODYPARTTRANSPORTSENDMAILMESSAGE19BOOLEANABOOLEANNULLRETURNTRUECATCHMESSAGINGEXCEPTIONEXEXPRINTSTACKTRACERETURNFALSE53收邮件模块收邮件是邮件收发系统重要的功能之一,该页面通过后台获取邮件服务器收件的LIST信息,并在JSP界面上显示邮件LIST信息。下面对收邮件页面中所使用的关键类进行介绍。531主要类说明1)GETMAILJAVAGETMAILJAVA类中的CONNECT()函数用于获取连接POP3服务器状态,并返回包含当前邮箱信息的对象。语法STORECONNECTPOP3HOST,USER,PASSWORD表56GETMAILJAVA类属性说明属性名说明POP3HOSTPOP3服务器地址MAILSERVERPORTPOP3服务器端口号USER登录POP3服务器的账号PASSWORD登录POP3服务器的密码VALIDATE是否需要身份验证的GETMAILJAVA类中的GETMAILINFO()函数用于获取邮件列表的信息并取出处理该信息,并将处理的结果打印在相应的JSP界面中,利用JSP界面显示出来。20表57GETMAILINFO()函数属性说明属性名说明MAP用于存放获取到的邮件信息的HASHMAPMULTIPART判定该邮件是否有附件,如果有,用该属性进行存放ENUM1一个枚举类型,用于存放读取到邮件ID532部分主要代码在后台利用JAVA代码获取POP3邮件服务器的邮件信息列表,并在JSP中显示出来读取邮件的方法READMAIL()PUBLICMAPREADMAILSTRINGBASEPATH,STRINGIDTHROWSEXCEPTIONMAPMAPNEWHASHMAP/找到目标邮件MESSAGEMSGFINDMAILID/读取邮件标题MAPPUT“SUBJECT“,MSGGETSUBJECT/读取发件人MAPPUT“SENDER“,MSGGETFROM0TOSTRINGMAPPUT“ATTACH“,“/取得邮件内容IFMSGISMIMETYPE“TEXT/“MAPPUT“CONTENT“,MSGGETCONTENTTOSTRINGELSESTRINGBUFFERRESULTNEWSTRINGBUFFERMULTIPARTMPMULTIPARTMSGGETCONTENTBODYPARTPARTNULLSTRINGDISPNULL/遍历每个MILTIPART对象FORINTJ0J阅读邮件返回功能界面邮件标题发件人230附件“内容246软件运行时的界面61登录邮件系统本邮件管理系统打开后,进入到欢迎界面,如图61点击进入系统按钮,进入系统登录界面,登录界面如图62所示,登录后会出现自动跳转界面,如图63所示,自动跳转后即会出现主功能选择界面,如图64所示。图61欢迎界面图62登录页面25图63登录跳转页面图64主功能界面62发送邮件界面621发送不带附件的邮件单击写邮件功能会弹出邮件编辑界面,其中邮件服务器地址及发件人在登录时已经获取,所以不用填写,只需要填写收件人,主题内容等即可点击发送按钮,发送当前所编辑的邮件。邮件编辑界面如图65所示。26图65发送不带附件的邮件622发送带附件的邮件如需要发送带附件的邮件,只需要在图65的界面中点击附件后面的参照按钮,选取需要发送的附件路径即可。如图66所示。图66发送带有附件的邮件277系统测试在系统完成后需要对系统进行一定的测试,以保证其适用与不同的环境,测试基本分为以下几个部分。71同一SMTP服务器发送邮件的测试这个方面的测试测的是,用户登录一个服务器(测试中用的是公司的邮件服务器)来发送一封邮件的测试。711发送一封文本邮件给一个收信人测试中仍然用我们公司的SMTPNEUSOFTCOM邮件服务器同时发往不同的邮箱,按照图65发送不带有附件的邮件,接收到的邮件如图71所示。通过本系统都可以正常的接收到。从而很好的验证了,我们的邮件系统支持各个邮箱之间互相发送接受的功能。(由于公司部门原因,系统环境为日文,所以出现部分乱码,望谅解)图71接收到邮件列表信息712发送一封带附件的邮件给一个收件人测试同样使用711节的方法,添加附件后发送,同样,在收件人方(使用OUTLOOK进行测试)可以正确接收,并且可以下载附件到本地,说明此系统实现了附件发送和下载的功能。而下图72则为在收件箱内读取名为ASD邮件的信息截图。28图72在邮件箱内读取收到的纯文本邮件内容72利用不同的SMTP服务器发送邮件的测试这个方面的测试是指利用不同的邮箱来发送邮件,上面的测试已经实现NEUSOFTCOM和163COM两个SMTP服务器之间的互相发送,至于测试的分类雷同于利用同一服务器发送邮件的测试,所以不再此赘述(也曾经测试过QQ,但是会出现服务器拒绝连接,上网上查了一下,应该是服务器本身加密的问题,无法解决)。总之,通过以上的各方面多个角度的测试,使我改正了代码中的许多不合理的以及错误的地方,也提升了对MAIL开发的业务能力,最终也证明了,我的软件系统是支持多种服务器,支持附件发送和下载的基于B/S架构的WEB邮件收发管理系统。298结论本次编写的邮件收发管理系统,是由本人PG的所有代码,当然也离不开导师的教导和一些同事之间的相互沟通,在其中熟悉了专门用于收发邮件的SMTP协议和POP3协议以及RFC规定的邮件的格式的基础上,运用JAVAMAILSTRUTS框架HTML/CSS等技术,从实际使用情况做起,克服重重困难,终

温馨提示

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

评论

0/150

提交评论