毕业设计:system based on web with e protocol and system functions.docx

上传人:文****钱 文档编号:23623 上传时间:2018-05-02 格式:DOCX 页数:32 大小:98.65KB
下载 相关 举报
毕业设计:system based on web with e protocol and system functions.docx_第1页
第1页 / 共32页
毕业设计:system based on web with e protocol and system functions.docx_第2页
第2页 / 共32页
毕业设计:system based on web with e protocol and system functions.docx_第3页
第3页 / 共32页
毕业设计:system based on web with e protocol and system functions.docx_第4页
第4页 / 共32页
毕业设计:system based on web with e protocol and system functions.docx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、1基于WEB的电子邮件系统邮件协议研究与系统功能实现摘要通过分析JAVAMAIL的实现原理,采用开源框架STRUTS,SPRING,HIBERNATE和面向对象的方法实现基于WEB的电子邮件系统功能。论文研究了接收邮件的和解析邮件的工作原理,并阐述了如何实现。本系统中我主要负责用户注册、登陆、退出、接收站内信、读取站内信、移动站内信、删除站内信、设置其他邮箱、收取其他邮箱邮件、解析其他邮箱邮件、删除其他邮箱邮件、系统管理等功能的实现。关键词JAVAMAIL;STRUTS;SPRING;HIBERNATE2SYSTEMBASEDONWEBWITHEPROTOCOLANDSYSTEMFUNCTIO

2、NSABSTRACTTHROUGHANALYSISJAVAMAILOFTHEREALIZATIONOFTHEPRINCIPLEOFOPENSOURCEFRAMEWORKFORTHEUSEOFSTRUTS,SPRING,HIBERNATEANDOBJECTORIENTEDMETHODOFWEBBASEDESYSTEMRESEARCHPAPERSTORECEIVEEMESSAGESANDTHEWORKOFANALYTICTHEORY,ANDEXPLAINED,LOGIN,EXIT,RECEIVINGSTATIONWITHINTHELETTER,READALETTERSTATION,MOBILEST

3、ATIONLETTERLETTERTODELETESTATIONS,SETUPOTHERMAIL,RECEIVEMAILTOOTHEREMAILRESOLVETODELETETHEOTHEREMESSAGES,THESYSTEMMANAGEMENTFUNCTIONSTOACHIEVEKEYWORDSJAVAMAIL;STRUTS;SPRING;HIBERNATE3目录第1章引言411基于WEB的电子邮件选题目的和意义412基于WEB的电子邮件国内外研究现状513基于WEB的电子邮件系统开发研究方法与策略614基于WEB的电子邮件系统软件开发的可行性615系统开发与运行环境6151系统开发环境6

4、152软件运行环境7第2章系统开发相关技术821STRUTS简介8211优点8212缺点822SPRING简介923HIBERNATE简介924MVC简介1025JAVAMAILAPI研究10251JAVAMAILAPI简介10252相关协议一览11253JAVAMAIL安装12254JAVAMAILAPI详解13255使用JAVAMAILAPI17256邮件认证18第3章概要设计19第4章详细设计与编码实现2041程序包的结构2042系统的功能模块的详细设计与实现20421用户注册登录模块20422站内接收邮件模块23423其他邮箱模块26424系统管理模块29第5章结论30第6章参考文献3

5、2第7章致谢错误未定义书签。4第1章引言11基于WEB的电子邮件选题目的和意义电子邮件是80年代初新起的一种基于计算机网络技术,采用存储和转发方式传递交换信息的快捷,高效,廉价的电子信息业务,是计算机互联网系统中提供的一项基本服务。电子邮件作为一种现代化通信工具可以传递文字,图表,声音,电影等各类信息,其传递速度也是传统邮件所无法比拟的。其主要应用领域是电子邮件服务。用户将要发送的信息以规定的格式通过通信网络发送到收信人的信箱中,信箱实际上与通信网络相连的计算机存储器,收信人可以通过通信网络随时打开自己的信箱,看到别人发来的信件,同时可以利用自己的信箱写回信或发送信件。电子邮件服务在信息的交流

6、,传播,检索,管理等领域的应用越来越广泛,随着电子邮件数量的增加,需求多样化,电子邮件技术的发展趋势也越趋于更细致化,更复杂化。作为电子邮件的信息服务平台的邮件系统使整个电子邮件世界的核心,也是个性化增值信息服务的关键技术。电子邮件系统是在模拟邮政系统基础上,汲取电报,电传,传真技术和计算机信息技术的精华,利于处处转发的通信方式,在开放系统互联国际标准中形成为网络用于传送消息和文件提供一个可靠,异步,垮平台的机制,可以实现点到点和点到多结点上的网络用户间的通信。电子邮件系统经过几十年的发展,已经形成了完善的技术体系。电子邮件系统的发展经历了远程登陆模式,专用客服端模式,基于WEB的模式,目前正

7、向WAP模式迁移。随着互联网的飞速发展,电子邮件的用户数量也业务量的急增,种类繁多的商业增值服务需求以及用户对服务种类的智能化需求,向负载它们的电子邮件系统服务的种类,容量,技术支持,付费方式等方面提出了挑战。邮件服务系统在保留了电子邮件系统最初的收发邮件,邮件存储等基本功能的同时,融入了最新的计算机与网络技术,是电子邮件系统有了全新的改观。5电子邮件已经成为人们喜爱的通信方式之一,是信息交流的重要手段之一,也是单位加强信息交流的重要手段。在我国信息化的过程中,邮件系统已经成为信息系统中必不可少的一部分。传统的邮件系统分为邮件服务器和客服端,即CLIENTSERVER(CS)结构。用户通过邮件

8、客户端来接受和发送邮件。近年来随着WEB技术的不断成熟,采用浏览器和服务器BROWSERSERVER形式的软件层出不穷,并在实际应用中得到了良好的效果。BS结构同传统的CS结构相比具有对客户机的低要求,较低的开发成本,方便的维护,软件的高复用性等优点。因此,系统采用BS结构,即用户以WEB方式进行接收和发送邮件。12基于WEB的电子邮件国内外研究现状国内很多企事业单位都有自己的邮件服务系统,免费邮箱有163,新浪等,用户对电子邮件安全性、可靠性及功能上的要求也在不断提高。因此,电子邮件服务供应商必须提供更安全、更可靠、功能更丰富的服务,才能发展业务,吸引用户,从众多竞争者中脱颖而出。如何构建高

9、效、稳定、安全、易用、可扩展、功能丰富的电子邮件系统是众多电信运营商、ISPINTERNETSERVICEPROVIDER、ICPINTERNETCONTENTPROVIDER共同面临的问题。邮件服务器供应商致力于以下几个方面提高邮件服务功能1增加多用户模板的功能,以满足不同用户对界面的不同喜好,如提供多种邮件WEBMAIL页面风格,提供个性化模板和多风格信纸,用户可以定义邮件系统界面等。2增加防病毒模块,以增加E统整体的安全性,利用邮件加密和邮件签名等方法进行邮件传送。在服务器端使用防病毒模块。将电子邮件系统向统一信息系统发展,加入最新资讯,多媒体等功能。反垃圾邮件为用户提供反垃圾邮件的多种

10、过滤器,充分保证用户收到最低限度的垃圾邮件骚扰。613基于WEB的电子邮件系统开发研究方法与策略1查看163邮箱、邮箱等,研究它们的实现方式,结合自己要实现的系统找到合适的切入点。2本课题要求对MVC有一定的掌握,熟悉STRUTS、SPRING、HIBERNATE、MYSQL、TOMCAT的使用,以及有较强的自学能力和熟练使用MYELIPSE开发环境的能力。3对于技术难题先查资料,找不到答案询问同学和老师,请求帮助。14基于WEB的电子邮件系统软件开发的可行性1技术可行性本系统主要用到开源框架STRUTS、SPRING、HIBERNATE,有很多的书籍和资料介绍如何使用这些框架,JAVA是目前

11、较为流行的技术,有一定的编程基础就能快速学习JAVA,所以在技术上是可行的。2经济可行性由于本系统是本科毕业设计的题目,这样的系统对于大多数企业来说不用花费高昂的代价去架设企业邮箱,企业可以使用我们开发的系统。我们本科生也有充裕的时间去开发这样的一个系统,只需要一台电脑和人力,不需要很大的投资。所以在经济上是可行的。3操作可行性本系统采用当前最为流行的技术STRUTSSPRINGHIBERNATE框架去实现,扩展性很强,对于以后有比较好的特性也能很快速和方便的添加上去,所以在操作上是可行的。15系统开发与运行环境151系统开发环境1JAVA环境7采用的是JDK16,我们要开发的系统是基于J2E

12、E,需要安装J2SE,J2SESDK是开发任何JAVA系统必须安装的工具包。2数据库采用的是MYSQL51,MYSQL是最受欢迎的开源SQL数据库管理系统,是一个快捷的、可靠的和易于使用的数据库服务器。3WEB服务器采用的是TOMCAT6018解压版本,TOMCAT是APACHEJARKARTA的一个子项目,是一个免费的、开放源码的、支持JSP和SERVLET技术的容器,它同时又是一个WEB服务器软件。TOMCAT很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能。TOMCAT是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是

13、很多的场合下被普遍使用,是开发和调试JSP程序的首选。4集成开发工具MYECLIPSEMYECLIPSE是目前最流行的J2EE应用集成开发工具。MYECLIPSE一经出现就以其功能强大、插件丰富的特性赢得了认可,其主要的属性有强大的插件功能、代码重构和代码自动生成功能、快速修复错误、调整组织导入包、弹出窗口进行代码自动装配。由于功能强大,MYECLIPSE成为J2EEIDE领域的霸主,它能够很好地与MYSQL、TOMCAT进行集成。本系统中我们选用MYECLIPSE70作为开发工具。152软件运行环境1软件系统环境WINDOWSXP操作系统、LINUX系统。2硬件系统环境普通的计算机,局域网,

14、以及能够连接上的INTERNET。8第2章系统开发相关技术21STRUTS简介STRUTS只是一个MVC框架(FRAMEWORK),用于快速开发JAVAWEB应用。STRUTS实现的重点在CCONTROLLER,包括ACTIONSERVLETREQUESTPROCESSOR和我们定制的ACTION,也为VVIEW提供了一系列定制标签(CUSTOMTAG)。但STRUTS几乎没有涉及MMODEL,所以STRUTS可以采用JAVA实现的任何形式的商业逻辑。211优点STRUTS跟TOMCAT、TURBINE等诸多APACHE项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机

15、制。TAGLIB和页面导航。TAGLIB是STRUTS的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许STRUTS是一个很好的起点。关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。212缺点TAGLIB是STRUTS的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真

16、的很棒。STRUTS将MVC的CONTROLLER一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。虽然它现在还有不少缺点,但它是一种非常优秀的J2EEMVC实现方式。922SPRING简介SPRING是一个轻型容器LIGHTWEIGHTCONTAINER,其核心是BEAN工厂BEANFACTORY,用以构造我们所需要的MMODEL。在此基础之上,SPRING提供了AOP(ASPECTORIENTEDPROGRAMMING,面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对BEAN工厂的扩展APPLICATIONCONTEXT更加方便我们实现J2EE的应用;D

17、AOORM的实现方便我们进行数据库的开发;WEBMVC和SPRINGWEB提供了JAVAWEB应用的框架或与其他流行的WEB框架进行集成。23HIBERNATE简介HIBERNATE顾名思义冬眠的意思,相信它的创造者的用意在于用这个工具将数据库连接持久化层冬眠,关于HIBERNATE网上争论很多,有人说其为工具,有人说其为框架,我相信一个人有一个人理解问题的角度,只要处理问题的方法正确就可以了。HIBERNATE是采用ORM映射机制的持久层开发工具,它是JAVA应用和关系数据库之前的桥梁,负责JAVA对象和关系数据之间的映射。内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库

18、访问API,在JAVA应用中使用到HIBERNATE包含如下步骤。1创建HIBERNATE配置文件2创建持久类3创建对象关系映射文件4通过HIBERNATEAPI编写访问数据库的代码如果想了解HIBERNATE或者是要学习它的人必须要首先了解两个比较重要的概念1POJO在HIBERNATE中理解为数据库表所对应的DOMAINOBJECT,如果从子面上理解就是无格式普通JAVA对象,简单的理解就是一个不包含逻辑代码的值对象。从数据层面上看,POJO作为数据实体的对象化表现形式,也成为实体。2ORMORM可以理解成一种机制也可以理解成一种模式,对象关系映射,我个人10觉得如果想理解它可以和MVC比

19、较,模型视图控制。ORM是把对象和关系数据库映射到一起,而MVC是把视图和模型控制在一起。创建HIBERNATE的配置文件HIBERNATE从中读取和数据库连接的相关信息,这个配置文件应该位于应用的CLASSPATH中,主要有两种形式XML格式和PROPERTEIS信息文件。创建持久化类就是指需要被HIBERNATE持久化到数据库中的类,持久化类通常都是模型中的实体类,符合JAVABEAN的规范,包含一些属性,以及与之对应的GET、SET方法。24MVC简介MVC是三个单词的缩写,分别为模型MODEL,视图VIEW和控制CONTROLLER。MVC模式的目的就是实现WEB系统的职能分工。MOD

20、EL层实现系统中的业务逻辑,通常可以用JAVABEAN或EJB来实现。VIEW层用于与用户的交互,通常用JSP来实现。CONTROLLER层是MODEL与VIEW之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。25JAVAMAILAPI研究251JAVAMAILAPI简介JAVAMAILAPI是读取、撰写、发送电子信息的可选包。我们可用它来建立如EUDORA、FOXMAIL、MSOUTLOOKEXPRESS一般的邮件用户代理程序(MAILUSERAGENT,简称MUA)。而不是像SENDMAIL或者其它的邮件传输代理(

21、MAILTRANSFERAGENT,简称MTA)程序那样可以传送、递送、转发邮件。从另外一个角度来看,我们这些电子邮件用户日常用MUA程序来读写邮件,而MUA依赖着MTA处理邮件的递送。11252相关协议一览4大信息传输协议SMTP、POP、IMAP、MIME,上面的4个协议,并不是全部,还有NNTP和其它一些协议可用于传输信息,但是由于不常用到,所以本文便不提及了。理解这4个基本的协议有助于我们更好的使用JAVAMAILAPI。然而JAVAMAILAPI是被设计为与协议无关的,目前我们并不能克服这些协议的束缚。确切的说,如果我们使用的功能并不被我们选择的协议支持。1SMTP简单邮件传输协议定

22、义了递送邮件的机制。2POPPOP是一种邮局协议,目前为第3个版本,即众所周知的POP3。POP定义了一种用户如何获得邮件的机制。它规定了每个用户使用一个单独的邮箱。大多数人在使用POP时所熟悉的功能并非都被支持,例如查看邮箱中的新邮件数量。而这个功能是微软的OUTLOOK内建的,那么就说明微软OUTLOOK之类的邮件客户端软件是通过查询最近收到的邮件来计算新邮件的数量来实现前面所说的功能。因此在我们使用JAVAMAILAPI时需要注意,当需要获得如前面所讲的新邮件数量之类的信息时,我们不得不自己进行计算。3IMAPIMAP使用在接收信息的高级协议,目前版本为第4版,所以也被称为IMAP4。需

23、要注意的是在使用IMAP时,邮件服务器必须支持该协议。从这个方面讲,我们并不能完全使用IMAP来替代POP,不能期待IMAP在任何地方都被支持。假如邮件服务器支持IMAP,那么我们的邮件程序将能够具有以下被IMAP所支持的特性每个用户在服务器上可具有多个目录,这些目录能在多个用户之间共享。其与POP相比高级之处显而易见,但是在尝试采取IMAP时,我们认识到它并不是十分完美的由于IMAP需要从其它服务器上接收新信息,将这些信息递送给用户,维护每个用户的多个目录,这都为邮件服务器带来了高负载。并且IMAP与POP的一个不同之12处是POP用户在接收邮件时将从邮件服务器上下载邮件,而IMAP允许用户

24、直接访问邮件目录,所以在邮件服务器进行备份作业时,由于每个长期使用此邮件系统的用户所用的邮件目录会占有很大的空间,这将直接导致邮件服务器上磁盘空间暴涨。4MIMEMIME并不是用于传送邮件的协议,它作为多用途邮件的扩展定义了邮件内容的格式信息格式、附件格式等等。一些RFC标准都涉及了MIMERFC822,RFC2045,RFC2046,RFC2047。5NNTP和其它的第三方协议JAVAMAILAPI在设计时考虑到与第三方协议实现提供商之间的分离,我们可以很容易的添加一些第三方协议。253JAVAMAIL安装1安装JAVAMAIL为了使用JAVAMAILAPI,需要下载文件名格式为JAVAMA

25、ILVERSIONZIP的文件(这个文件中包括了JAVAMAIL实现),并将其中的MAILJAR文件添加到CLASSPATH中。这个实现提供了对SMTP、IMAP4、POP3的支持。2安装JAVABEANSACTIVATIONFRAMEWORK在安装了JAVAMAIL之后,我们还需要安装JAVABEANSACTIVATIONFRAMEWORK,因为这个框架是JAVAMAILAPI所需要的。如果我们使用J2EE的话,那么我们并无需单独下载JAVAMAIL,因为它存在于J2EEJAR中,只需将J2EEJAR加入到CLASSPATH即可。此框架增加了对任何数据块的分类、以及对它们的处理的特性。这些特

26、性是JAVAMAILAPI需要的。13254JAVAMAILAPI详解1JAVAMAIL环境AJAVAMAIL核心类结构在JAVAXMAIL的包下面存在着一些核心类SESSION、MESSAGE、ADDRESS、AUTHENTICATOR、TRANSPORT、STORE、FOLDER。而且在JAVAXMAILINTERNET包中还有一些常用的子类。BSESSIONSESSION类定义了基本的邮件会话,就像会话那样,我们进行收发邮件的工作都是基于这个会话的。SESSION对象利用了JAVAUTILPROPERTIES对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。SES

27、SION类的构造方法是私有的,所以我们可以使用SESSION类提供的GETDEFAULTINSTANCE这个静态工厂方法获得一个默认的SESSION对象PROPERTIESPROPSNEWPROPERTIESSESSIONSESSIONSESSIONGETDEFAULTINSTANCEPROPS,NULL或者使用GETINSTANCE这个静态工厂方法获得自定义的SESSIONPROPERTIESPROPSNEWPROPERTIESSESSIONSESSIONSESSIONGETINSTANCEPROPS,NULLCMESSAGE当我们建立了SESSION对象后,便可以被发送的构造信息体了。在这

28、里SUN提供了MESSAGE类型来帮助开发者完成这项工作。由于MESSAGE是一个抽象类,大多数情况下,我们使用JAVAXMAILINTERNETMIMEMESSAGE这个子类,该类是使用MIME类型、MIME信息头的邮箱信息。信息头只能使用USASCII字符,而非ASCII字符将通过编码转换为ASCII的方式使用。为了建立一个MIMEMESSAGE对象,我们必须将SESSION对象作为MIMEMESSAGE构造方法的参数传入14MIMEMESSAGEMESSAGENEWMIMEMESSAGESESSION注意对于MIMEMESSAGE类来讲存在着多种构造方法,比如使用输入流作为参数的构造方法

29、。在建立了MIMEMESSAGE对象后,我们需要设置它的各个PART,对于MIMEMESSAGE类来说,这些PART就是MIMEPART接口。最基本的设置信息内容的方法就是通过表示信息内容和米么类型的参数调用SETCONTENT方法MESSAGESETCONTENT“LGPZLL“,“TEXTPLAIN“然而,如果我们所使用的MIMEMESSAGE中信息内容是文本的话,我们便可以直接使用SETTEXT方法来方便的设置文本内容。MESSAGESETTEXT“LGPZLL“前面所讲的两种方法,对于文本信息,后者更为合适。而对于其它的一些信息类型,比如HTML信息,则要使用前者。使用SETSUBJE

30、CT方法对邮件设置邮件主题MESSAGESETSUBJECT“FIRST“DADDRESS像MESSAGE一样,ADDRESS类也是一个抽象类,所以使用JAVAXMAILINTERNETINTERNETADDRESS这个子类。通过传入代表邮件地址的字符串,我们可以建立一个邮件地址类ADDRESSADDRESSNEWINTERNETADDRESS“LGPZLL163“如果要在邮件地址后面增加名字的话,可以通过传递两个参数代表邮件地址和名字的字符串来建立一个具有邮件地址和名字的邮件地址类ADDRESSADDRESSNEWINTERNETADDRESS“LGPZLL163“,“LGPZLL“在建立了

31、邮件地址类后,我们通过MESSAGE的SETFROM和SETREPLYTO两种方法设置邮件的发信人MESSAGESETFROMADDRESS15MESSAGESETREPLYTOADDRESS若在邮件中存在多个发信人地址,我们可用ADDFORM方法增加发信人ADDRESSADDRESS”MESSAGEADDFROMADDRESS为了设置收信人,我们使用ADDRECIPIENT方法增加收信人,此方法需要使用MESSAGERECIPIENTTYPE的常量来区分收信人的类型MESSAGEADDRECIPIENTTYPE,ADDRESS下面是MESSAGERECIPIENTTYPE的三个常量MESSA

32、GERECIPIENTTYPETO收件人MESSAGERECIPIENTTYPECC抄送人MESSAGERECIPIENTTYPEBCC发件人EAUTHENTICATOR像JAVANET类那样,JAVAMAILAPI通过使用授权者类(AUTHENTICATOR)以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是指邮件服务器。在JAVAXMAIL包中可以找到这个JAVAMAIL的授权者类(AUTHENTICATOR)。在使用AUTHENTICATOR这个抽象类时,我们必须采用继承该抽象类的方式,并且该继承类必须具有返回PASSWORDAUTHENTICATION对象(用于存储认证时要

33、用到的用户名、密码)GETPASSWORDAUTHENTICATION方法。并且要在SESSION中进行注册,使SESSION能够了解在认证时该使用哪个类。下面代码片断中的MYAUTHENTICATOR就是一个AUTHENTICATOR的子类。PROPERTIESPROPSNEWPROPERTIESAUTHENTICATORAUTHNEWMYAUTHENTICATORSESSIONSESSIONSESSIONGETDEFAULTINSTANCEPROPS,AUTHFTRANSPORT在发送信息时,TRANSPORT类将被用到。这个类实现了发送信息的协议(通称为SMTP),16此类是一个抽象类,

34、我们可以使用这个类的静态方法SEND来发送消息TRANSPORTSENDMESSAGE也可由SESSION获得相应协议对应的TRANSPORT实例。并通过传递用户名、密码、邮件服务器主机名等参数建立与邮件服务器的连接,并使用SENDMESSAGE方法将信息发送,最后关闭连接MESSAGESAVECHANGESTRANSPORTTRANSPORTSESSIONGETTRANSPORT“SMTP“TRANSPORTCONNECTSETDEBUGTRUE。GSTORE和FOLDER接收邮件和发送邮件很类似都要用到SESSION。但是在获得SESSION后,我们需要从SESSION中获取特定类型的ST

35、ORE,然后连接到STORE,这里的STORE代表了存储邮件的邮件服务器。在连接STORE的过程中,极有可能需要用到用户名、密码或者AUTHENTICATOR。STORESTORESESSIONGETSTORE“POP3“STORECONNECTFOLDERREAD_ONLYMESSAGEMESSAGEFOLDERGETMESSAGES首先从STORE中获得INBOX这个FOLDER(对于POP3协议只有一个名为INBOX的FOLDER有效),然后以只读(FOLDERREAD_ONLY)的方式打开FOLDER,最后调用FOLDER的GETMESSAGES方法得到目录中所有MESSAGE的数组。

36、对于POP3协议只有一个名为INBOX的FOLDER有效,而对于IMAP协议,我们可以访问多个FOLDER而且SUN在设计FOLDER的GETMESSAGES方法时采取了很智能的方式首先接收新邮件列表,然后再需要的时候(比如读取邮件内容)才从邮件服务器读取邮件内容。在读取邮件时,我们可以用MESSAGE类的GETCONTENT方法接收邮件或是WRITETO方法将邮件保存,GETCONTENT方法只接收邮件内容(不包含邮件头),而WRITETO方法将包括邮件头。在读取邮件内容后,关闭FOLDER和STORE。17FOLDERCLOSEBOOLEANSTORECLOSE传递给FOLDERCLOSE

37、方法的BOOLEAN类型参数表示是否在删除操作邮件后更新FOLDER。255使用JAVAMAILAPI1发送邮件在获得了SESSION后,建立并填入邮件信息,然后发送它到邮件服务器。这便是使用JAVAMAILAPI发送邮件的过程,在发送邮件之前,我们需要设置SMTP服务器通过设置PROPERTIES的MAILSMTPSESSIONSESSIONGETDEFAULTINSTANCEPROPS,NULLMIMEMESSAGEMESSAGENEWMIMEMESSAGESESSIONMESSAGESETFROMNEWINTERNETADDRESSFROMMESSAGEADDRECIPIENTMESSA

38、GERECIPIENTTYPETO,NEWINTERNETADDRESSTOMESSAGESETSUBJECT“LGPZLL“MESSAGESETTEXT“LGPZLL“TRANSPORTSENDMESSAGE2接收邮件读取邮件,获得SESSION,并且连接到了邮箱的相应STORE,打开相应的FOLDER,然后得到想要的邮件,结束时关闭连接。STRINGSESSIONSESSIONGETDEFAULTINSTANCEPROPS,NULLSTORESTORESESSIONGETSTORE“POP3“STORECONNECTFOLDERREAD_ONLYMESSAGEMESSAGEFOLDERGE

39、TMESSAGES18FOLDERCLOSEFALSESTORECLOSE256邮件认证我们在此取代了直接使用邮件服务器主机名、用户名、密码这三个字符串作为连接到POP3STORE的方式,使用存储了邮件服务器主机名信息的属性文件,并在获得SESSION时传入自定义的AUTHENTICATOR实例PROPERTIESPROPSSYSTEMGETPROPERTIESPROPSPUT“MAILPOP3MAILSESSIONSESSIONGETDEFAULTINSTANCEPROPS,NEWCHECKPASSWORDUSERNAME,PASSWORDSTORESTOREMAILSESSIONGETST

40、ORE“POP3“STORECONNECTPOP3SERVER,USERNAME,PASSWORDCHECKPASSWORD类继承了抽象类AUTHENTICATOR,并且通过重载AUTHENTICATOR类的GETPASSWORDAUTHENTICATION方法返回PASSWORDAUTHENTICATION类对象。而GETPASSWORDAUTHENTICATION方法的参数PARAM是以逗号分割的用户名、密码组成的字符串。PACKAGECOMMAILOTHERMAILIMPORTJAVAXMAILAUTHENTICATORIMPORTJAVAXMAILPASSWORDAUTHENTICAT

41、IONPUBLICCLASSCHECKPASSWORDEXTENDSAUTHENTICATORSTRINGUSERNAMESTRINGPASSWORDPUBLICCHECKPASSWORD19PUBLICCHECKPASSWORDSTRINGUSERNAME,STRINGPASSWORDTHISUSERNAMEUSERNAMETHISPASSWORDPASSWORDPROTECTEDPASSWORDAUTHENTICATIONGETPASSWORDAUTHENTICATIONRETURNNEWPASSWORDAUTHENTICATIONUSERNAME,PASSWORDPUBLICSTRING

42、GETUSERNAMERETURNUSERNAMEPUBLICVOIDSETUSERNAMESTRINGUSERNAMETHISUSERNAMEUSERNAMEPUBLICSTRINGGETPASSWORDRETURNPASSWORDPUBLICVOIDSETPASSWORDSTRINGPASSWORDTHISPASSWORDPASSWORD第3章概要设计基于WEB的电子邮件系统概要设计由我的搭档实现。20第4章详细设计与编码实现41程序包的结构COMMAILDAO中是所有接口COMMAILFILTER中是过滤器COMMAILIMPL中是所有接口的实现COMMAILOTHERMAIL中是管理其

43、他邮箱COMMAILPAGE中是分页的处理类COMMAILSTRUTSACTION中是业务逻辑COMMAILSTRUTSFORM中是FORM表单COMMAILUTIL中是工具类COMMAILVO中是实体类42系统的功能模块的详细设计与实现421用户注册登录模块1用户注册登陆模块详细设计公共ACTION如下图所示,所有的ACTION都继承自BASEACTION,在ACTION中使用SUPERGETCURRENTUSER可以从SESSION中获取用户的实例。21图41公共ACTIONFIG41PUBLICACTION用户实体类USER如下图所示图42用户实体类FIG42THEENTITYOFUSE

44、R用户首先注册然后登陆,登陆后可以修改密码,用户注册登陆模块的USERACTION如下图所示图43用户ACTIONFIG43THEACTIONOFUSERACTION22用户注册登陆模块ACTION中的方法实现调用接口IUSERDAO中的方法,IUSERDAO接口中的方法由IUSERDAOIMPL具体实现,IUSERDAO如下图所示图44用户模块接口FIG44THEINTERFACEOFUSERMODULE2用户注册登陆模块的实现方式A用户注册用户打开网站即进入用户登陆页面,如果用户没有注册那么注册调用USERACTION中的REGISTER,将注册信息封装到实体USER的一个对象中,通过IU

45、SERDAO的REGISTER保存这个对象,持久化到数据库中。B用户登陆用户成功注册后输入正确的用户名和密码就可以登陆系统,调用USERACTION中的LOGIN方法,将登陆的用户名和密码传递给IUSERDAO中LOGIN,判断用户是否存在,如果用户存在并且密码正确那就向SESSION中写入USER这个实例,跳转到邮箱主页,如果用户不存在或密码不正确提示用户,让用户重新输入。C用户退出调用USERACTION中的LOGOUT方法,从SESSION中删除当前用户实例,返回到用户登陆页面。D找回密码当用户忘记密码的时候点击找回密码调用USERACTION中的FINDPASSWORD将你的用户23名

46、传递进去,然后调用IUSERDAO中的FINDUSERSTRINGUSERNAME查询数据库这个用户是否存在,如果存在查询出密码保护问题和答案,将密码保护问题显示给用户,让用户输入答案,如果用户的答案和数据库中的答案一致那么调用IUSERDAO中的FINDPASSWORD方法更新用户密码。E修改密码用户登陆成功后可以修改用户密码,调用USERACTION中的UPDATEPASSWORDINPUT转向到更新密码页面,更新密码调用USERACTION中的UPDATEPASSWORD。422站内接收邮件模块1站内接收邮件模块详细设计站内新邮件、收件箱、垃圾箱、已删除实体类RECEIVE,如下图所示图

47、45收件箱实体类FIG45THEENTITYOFINBOX其中STATUS字段不同的的值代表邮件所在的邮箱,0代表新邮件在新邮件里,1代表已读在收件箱里,2代表垃圾邮件在垃圾箱里,3代表已删除在已删除里。用户登陆后可以收邮件,移动邮件,删除邮件,查看邮件,站内接收邮件模块RECEIVEACTION如下图所示24图46收件箱ACTIONFIG46THEACTIONOFINBOX站内接收邮件模块RECEIVEACTION中的方法实现调用接口IRECEIVEDAO中的方法,IRECEIVEDAO接口中的方法由IRECEIVEDAOIMPL具体实现,IRECEIVEDAO如下图所示图47收件箱模块接口

48、FIG47THEINBOXINTERFACEMODULE2站内接收邮件模块的实现方式25A新邮件用户登陆成功后点击新邮件调用RECEIVEACTION中的NEWRECEIVE方法,通过IRECEIVEDAO中的QUERYALLNEW查询我所有新的邮件,即标记字段为0的邮件。B收件箱调用RECEIVEACTION中的ALLMAIL方法查询我所有的没有在垃圾箱和已删除中的邮件,即查询已读和未读邮件,通过IRECEIVEDAO中的QUERYALL实现。已删除调用RECEIVEACTION中的HASDEL方法查询我已删除邮件,通过IRECEIVEDAO中HASDEL实现。D垃圾箱调用RECEIVEAC

49、TION中的DUSTBINBOX方法查询我所有垃圾箱中的邮件,通过IRECEIVEDAO中的QUERYALLDUSTBIN方法实现E读取邮件点击收到的邮件标题,进入查看邮件详细信息,调用RECEIVEACTION中的FIND方法实现,FIND方法中传递邮件ID通过IRECEIVEDAO中的QUERY方法查看邮件详细信息。移动到垃圾箱调用RECEIVEACTION中的DUSTBIN方法,传递邮件ID,通过IRECEIVEDAO中的DUSTBIN方法设置邮件的状态为2。F删除邮件只是删除到已删除,调用RECEIVEACTION中SETDEL方法,传递邮件ID,通过IRECEIVEDAO中的SETDELETE方法设置邮件状态为3。G永久删除删除数据库中数据,不能找回,调用RECEIVEACTION中的DEL,传递邮件ID,通过IRECEIVEDAO中的DELETE方法删除数据库中的记录。26423其他邮箱模块1其他邮箱模块详细设计其他邮箱主要是收取其他邮件服务器上的邮件,需要INTERNET支持,可以添加其他邮箱、管理其他邮箱,接收邮件,查看邮件,删除邮件,回复邮件,使用其他邮箱发信等功能。用户邮件地址实体类MAIL,如下图所示图48用户地址实体类FIG48THEENTITYOFUSERADDRESS邮件服

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。