基于WEB的电子邮件系统邮件协议研究与系统功能实现毕业论文

上传人:无*** 文档编号:44560906 上传时间:2021-12-05 格式:DOC 页数:33 大小:263.50KB
收藏 版权申诉 举报 下载
基于WEB的电子邮件系统邮件协议研究与系统功能实现毕业论文_第1页
第1页 / 共33页
基于WEB的电子邮件系统邮件协议研究与系统功能实现毕业论文_第2页
第2页 / 共33页
基于WEB的电子邮件系统邮件协议研究与系统功能实现毕业论文_第3页
第3页 / 共33页
资源描述:

《基于WEB的电子邮件系统邮件协议研究与系统功能实现毕业论文》由会员分享,可在线阅读,更多相关《基于WEB的电子邮件系统邮件协议研究与系统功能实现毕业论文(33页珍藏版)》请在装配图网上搜索。

1、基于WEB的电子邮件系统邮件协议研究与系统功能实现本科毕业论文(设计) 题 目 基于WEB的电子邮件系统邮件协议研究与系统功能实现 毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、

2、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 基于WEB的电子邮件系统邮件协议研究与系统功能实现摘要:通过分析JavaMail的实现原理,采用开源框架Struts,Spring,Hibernate和面向对象的方法实现基于WEB的电子邮件系统功能。论文研究了接收邮件的和解析邮件的工作原理,并阐述了如何实现。本系统中我主要负责用户注册、登陆、退出、接收

3、站内信、读取站内信、移动站内信、删除站内信、设置其他邮箱、收取其他邮箱邮件、解析其他邮箱邮件、删除其他邮箱邮件、系统管理等功能的实现。关键词:JavaMail;Struts;Spring;Hibernate E-mail system based on web with e-mail protocol and system functions Li GuangpingComputer and Information Science Faulty, Southwest China University, Chongqing 400715, ChinaAbstract:Through analys

4、is JavaMail of the realization of the principle of open-source framework for the use of Struts, Spring, Hibernate and object-oriented method of web-based e-mail system. Research papers to receive e-mail messages and the work of analytic theory, and explained how to achieve it. This system is mainly

5、responsible for my user registration, login, exit, receiving station within the letter, read a letter station, mobile station letter letter to delete stations, set up other mail, receive mail to other e-mail, Mail resolve to delete the other E-mail messages, the system management functions to achiev

6、e.Keywords: JavaMail;Struts;Spring;Hibernate 目录第1章 引言41.1 基于WEB的电子邮件选题目的和意义41.2 基于WEB的电子邮件国内外研究现状51.3 基于WEB的电子邮件系统开发研究方法与策略51.4 基于WEB的电子邮件系统软件开发的可行性51.5 系统开发与运行环境61.5.1 系统开发环境61.5.2 软件运行环境7第2章 系统开发相关技术72.1 Struts简介72.1.1 优点:72.1.2 缺点:72.2 Spring简介82.3 Hibernate简介82.4 MVC简介92.5 JavaMail API研究92.5.1 J

7、avaMail API简介92.5.2 相关协议一览92.5.3 JavaMail安装102.5.4 JavaMail API 详解112.5.5 使用JavaMail API152.5.6 邮件认证16第3章 概要设计17第4章 详细设计与编码实现184.1 程序包的结构184.2系统的功能模块的详细设计与实现184.2.1 用户注册登录模块184.2.2 站内接收邮件模块204.2.3 其他邮箱模块234.2.4 系统管理模块28第5章 结论29第6章 参考文献30第7章 致谢32第1章 引言1.1 基于WEB的电子邮件选题目的和意义电子邮件是80年代初新起的一种基于计算机网络技术,采用存

8、储和转发方式传递交换信息的快捷,高效,廉价的电子信息业务,是计算机互联网系统中提供的一项基本服务。电子邮件作为一种现代化通信工具可以传递文字,图表,声音,电影等各类信息,其传递速度也是传统邮件所无法比拟的。其主要应用领域是电子邮件服务。用户将要发送的信息以规定的格式通过通信网络发送到收信人的信箱中,信箱实际上与通信网络相连的计算机存储器,收信人可以通过通信网络随时打开自己的信箱,看到别人发来的信件,同时可以利用自己的信箱写回信或发送信件。电子邮件服务在信息的交流,传播,检索,管理等领域的应用越来越广泛,随着电子邮件数量的增加,需求多样化,电子邮件技术的发展趋势也越趋于更细致化,更复杂化。作为电

9、子邮件的信息服务平台的邮件系统使整个电子邮件世界的核心,也是个性化增值信息服务的关键技术。电子邮件系统是在模拟邮政系统基础上,汲取电报,电传,传真技术和计算机信息技术的精华,利于处处转发的通信方式,在开放系统互联国际标准中形成为网络用于传送消息和文件提供一个可靠,异步,垮平台的机制,可以实现点到点和点到多结点上的网络用户间的通信。电子邮件系统经过几十年的发展,已经形成了完善的技术体系。电子邮件系统的发展经历了远程登陆模式,专用客服端模式,基于WEB的模式,目前正向WAP模式迁移。随着互联网的飞速发展,电子邮件的用户数量也业务量的急增,种类繁多的商业增值服务需求以及用户对服务种类的智能化需求,向

10、负载它们的电子邮件系统服务的种类,容量,技术支持,付费方式等方面提出了挑战。邮件服务系统在保留了电子邮件系统最初的收发邮件,邮件存储等基本功能的同时,融入了最新的计算机与网络技术,是电子邮件系统有了全新的改观。电子邮件已经成为人们喜爱的通信方式之一,是信息交流的重要手段之一,也是单位加强信息交流的重要手段。在我国信息化的过程中,邮件系统已经成为信息系统中必不可少的一部分。传统的邮件系统分为邮件服务器和客服端,即Client/Server(C/S)结构。用户通过邮件客户端来接受和发送邮件。近年来随着web技术的不断成熟,采用浏览器和服务器Browser/Server形式的软件层出不穷,并在实际应

11、用中得到了良好的效果。B/S结构同传统的C/S结构相比具有对客户机的低要求,较低的开发成本,方便的维护,软件的高复用性等优点。因此,系统采用B/S结构,即用户以web方式进行接收和发送邮件。1.2 基于WEB的电子邮件国内外研究现状国内很多企事业单位都有自己的邮件服务系统,免费邮箱有163,新浪等,用户对电子邮件安全性、可靠性及功能上的要求也在不断提高。因此,电子邮件服务供应商必须提供更安全、更可靠、功能更丰富的服务,才能发展业务,吸引用户,从众多竞争者中脱颖而出。如何构建高效、稳定、安全、易用、可扩展、功能丰富的电子邮件系统是众多电信运营商、ISP(Internet Service Prov

12、ider)、ICP(Internet Content Provider)共同面临的问题。邮件服务器供应商致力于以下几个方面提高邮件服务功能:(1)增加多用户模板的功能,以满足不同用户对界面的不同喜好,如提供多种邮件webmail页面风格,提供个性化模板和多风格信纸,用户可以定义邮件系统界面等。(2)增加防病毒模块,以增加E-mail系统整体的安全性,利用邮件加密和邮件签名等方法进行邮件传送。在服务器端使用防病毒模块。将电子邮件系统向统一信息系统发展,加入最新资讯,多媒体等功能。反垃圾邮件为用户提供反垃圾邮件的多种过滤器,充分保证用户收到最低限度的垃圾邮件骚扰。1.3 基于WEB的电子邮件系统开

13、发研究方法与策略(1)查看163邮箱、qq邮箱等,研究它们的实现方式,结合自己要实现的系统找到合适的切入点。(2)本课题要求对MVC有一定的掌握,熟悉Struts、Spring、Hibernate、MySQL、Tomcat的使用,以及有较强的自学能力和熟练使用MyElipse开发环境的能力。(3)对于技术难题先查资料,找不到答案询问同学和老师,请求帮助。1.4 基于WEB的电子邮件系统软件开发的可行性(1)技术可行性本系统主要用到开源框架Struts、Spring、Hibernate,有很多的书籍和资料介绍如何使用这些框架,JAVA是目前较为流行的技术,有一定的编程基础就能快速学习JAVA,所

14、以在技术上是可行的。(2)经济可行性由于本系统是本科毕业设计的题目,这样的系统对于大多数企业来说不用花费高昂的代价去架设企业邮箱,企业可以使用我们开发的系统。我们本科生也有充裕的时间去开发这样的一个系统,只需要一台电脑和人力,不需要很大的投资。所以在经济上是可行的。 (3)操作可行性本系统采用当前最为流行的技术Struts+Spring+Hibernate框架去实现,扩展性很强,对于以后有比较好的特性也能很快速和方便的添加上去,所以在操作上是可行的。1.5 系统开发与运行环境1.5.1 系统开发环境(1)JAVA环境采用的是JDK1.6,我们要开发的系统是基于J2EE,需要安装J2SE,J2S

15、E SDK是开发任何Java系统必须安装的工具包。(2)数据库采用的是MySQL5.1,MySQL是最受欢迎的开源SQL数据库管理系统,是一个快捷的、可靠的和易于使用的数据库服务器。(3)Web服务器采用的是Tomcat6.0.18解压版本,Tomcat是Apache-Jarkarta的一个子项目,是一个免费的、开放源码的、支持JSP和Servlet技术的容器,它同时又是一个Web服务器软件。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能。Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合

16、下被普遍使用,是开发和调试JSP程序的首选。(4)集成开发工具MyEclipseMyEclipse是目前最流行的J2EE应用集成开发工具。MyEclipse一经出现就以其功能强大、插件丰富的特性赢得了认可,其主要的属性有强大的插件功能、代码重构和代码自动生成功能、快速修复错误、调整组织导入包、弹出窗口进行代码自动装配。由于功能强大,MyEclipse成为J2EE IDE领域的霸主,它能够很好地与MySQL、Tomcat进行集成。本系统中我们选用MyEclipse7.0作为开发工具。1.5.2 软件运行环境(1)软件系统环境Windows XP操作系统、Linux系统。(2)硬件系统环境普通的计

17、算机,局域网,以及能够连接上的Internet。第2章 系统开发相关技术2.1 Struts简介Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。2.1.1 优点: Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它

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

19、会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。虽然它现在还有不少缺点,但它是一种非常优秀的J2EE MVC实现方式。 2.2 Spring简介Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对

20、Bean工厂的扩展ApplicationContext更加方便我们实现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。2.3 Hibernate简介Hibernate顾名思义冬眠的意思,相信它的创造者的用意在于用这个工具将数据库连接持久化层冬眠,关于Hibernate网上争论很多,有人说其为工具,有人说其为框架,我相信一个人有一个人理解问题的角度,只要处理问题的方法正确就可以了。Hibernate是采用ORM映射机制的持久层开发工具,它是JAVA应用和关系数据库之前的桥梁,负责J

21、AVA对象和关系数据之间的映射。内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API,在JAVA应用中使用到Hibernate包含如下步骤。(1)创建Hibernate配置文件(2)创建持久类(3)创建对象关系映射文件(4)通过HibernateAPI编写访问数据库的代码如果想了解Hibernate或者是要学习它的人必须要首先了解两个比较重要的概念:(1)POJO:在Hibernate中理解为数据库表所对应的Domain Object,如果从子面上理解就是无格式普通JAVA对象,简单的理解就是一个不包含逻辑代码的值对象。从数据层面上看,POJO作为数据实体的对象化表现

22、形式,也成为实体。(2)ORM:ORM可以理解成一种机制也可以理解成一种模式,对象关系映射,我个人觉得如果想理解它可以和MVC比较,模型视图控制。ORM是把对象和关系数据库映射到一起,而MVC是把视图和模型控制在一起。创建Hibernate的配置文件Hibernate从中读取和数据库连接的相关信息,这个配置文件应该位于应用的classpath中,主要有两种形式XML格式和.Properteis信息文件。创建持久化类就是指需要被Hibernate持久化到数据库中的类,持久化类通常都是模型中的实体类,符合JavaBean的规范,包含一些属性,以及与之对应的get、set方法。2.4 MVC简介MV

23、C是三个单词的缩写,分别为:模型(Model),视图(View)和控制Controller)。MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。View层用于与用户的交互,通常用JSP来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。2.5 JavaMail API研究2.5.1 JavaMail API简介 JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如Eudor

24、a、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。而不是像sendmail或者其它的邮件传输代理(Mail Transfer Agent,简称MTA)程序那样可以传送、递送、转发邮件。从另外一个角度来看,我们这些电子邮件用户日常用MUA程序来读写邮件,而MUA依赖着 MTA处理邮件的递送。 2.5.2 相关协议一览 4大信息传输协议: SMTP 、POP 、IMAP 、MIME,上面的4个协议,并不是全部,还有NNTP和其它一些协议可用于传输信息,但是由于不常用到,所以本文便不提及了。理解这4个基本的协议有助于我们更好

25、的使用JavaMail API。然而JavaMail API是被设计为与协议无关的,目前我们并不能克服这些协议的束缚。确切的说,如果我们使用的功能并不被我们选择的协议支持。(1)SMTP简单邮件传输协议定义了递送邮件的机制。(2)POPPOP是一种邮局协议,目前为第3个版本,即众所周知的POP3。POP定义了一种用户如何获得邮件的机制。它规定了每个用户使用一个单独的邮箱。大多数人在使用POP时所熟悉的功能并非都被支持,例如查看邮箱中的新邮件数量。而这个功能是微软的Outlook内建的,那么就说明微软 Outlook之类的邮件客户端软件是通过查询最近收到的邮件来计算新邮件的数量来实现前面所说的功

26、能。因此在我们使用JavaMail API时需要注意,当需要获得如前面所讲的新邮件数量之类的信息时,我们不得不自己进行计算。 (3)IMAPIMAP使用在接收信息的高级协议,目前版本为第4版,所以也被称为IMAP4。需要注意的是在使用IMAP时,邮件服务器必须支持该协议。从这个方面讲,我们并不能完全使用IMAP来替代POP,不能期待IMAP在任何地方都被支持。假如邮件服务器支持IMAP,那么我们的邮件程序将能够具有以下被IMAP所支持的特性:每个用户在服务器上可具有多个目录,这些目录能在多个用户之间共享。 其与POP相比高级之处显而易见,但是在尝试采取IMAP时,我们认识到它并不是十分完美的:

27、由于IMAP需要从其它服务器上接收新信息,将这些信息递送给用户,维护每个用户的多个目录,这都为邮件服务器带来了高负载。并且IMAP与POP的一个不同之处是POP用户在接收邮件时将从邮件服务器上下载邮件,而IMAP允许用户直接访问邮件目录,所以在邮件服务器进行备份作业时,由于每个长期使用此邮件系统的用户所用的邮件目录会占有很大的空间, 这将直接导致邮件服务器上磁盘空间暴涨。 (4)MIME MIME并不是用于传送邮件的协议,它作为多用途邮件的扩展定义了邮件内容的格式:信息格式、附件格式等等。一些RFC标准都涉及了MIME: RFC 822, RFC 2045, RFC 2046, RFC 204

28、7。(5)NNTP和其它的第三方协议 JavaMail API在设计时考虑到与第三方协议实现提供商之间的分离,我们可以很容易的添加一些第三方协议。2.5.3 JavaMail安装 (1)安装JavaMail为了使用JavaMail API,需要下载文件名格式为javamail-version.zip的文件(这个文件中包括了JavaMail实现),并将其中的mail.jar文件添加到CLASSPATH中。这个实现提供了对SMTP、IMAP4、POP3的支持。 (2) 安装JavaBeans Activation Framework在安装了JavaMail之后,我们还需要安装JavaBeans A

29、ctivation Framework,因为这个框架是JavaMail API所需要的。如果我们使用J2EE的话,那么我们并无需单独下载JavaMail,因为它存在于J2EE.jar中,只需将J2EE.jar加入到 CLASSPATH即可。此框架增加了对任何数据块的分类、以及对它们的处理的特性。这些特性是JavaMail API需要的。 2.5.4 JavaMail API 详解(1) JavaMail环境 AJavaMail核心类结构 在javax.mail的包下面存在着一些核心类:Session、Message、Address、Authenticator、Transport、Store、F

30、older。而且在javax.mail.internet包中还有一些常用的子类。 BSession Session类定义了基本的邮件会话,就像Http会话那样,我们进行收发邮件的工作都是基于这个会话的。Session对象利用了java.util.Properties对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。 Session类的构造方法是私有的,所以我们可以使用Session类提供的getDefaultInstance()这个静态工厂方法获得一个默认的Session对象: Properties props = new Properties(); Session s

31、ession = Session.getDefaultInstance(props, null); 或者使用getInstance()这个静态工厂方法获得自定义的Session: Properties props = new Properties(); Session session = Session.getInstance(props, null); CMessage 当我们建立了Session对象后,便可以被发送的构造信息体了。在这里SUN提供了Message类型来帮助开发者完成这项工作。由于 Message是一个抽象类,大多数情况下,我们使用javax.mail.internet.Mi

32、meMessage这个子类,该类是使用MIME类 型、MIME信息头的邮箱信息。信息头只能使用US-ASCII字符,而非ASCII字符将通过编码转换为ASCII的方式使用。 为了建立一个MimeMessage对象,我们必须将Session对象作为MimeMessage构造方法的参数传入: MimeMessage message = new MimeMessage(session); 注意:对于MimeMessage类来讲存在着多种构造方法,比如使用输入流作为参数的构造方法。 在建立了MimeMessage对象后,我们需要设置它的各个part,对于MimeMessage类来说,这些part就是M

33、imePart接口。最基本的设置信息内容的方法就是通过表示信息内容和米么类型的参数调用setContent()方法: message.setContent(lgpzll, text/plain); 然而,如果我们所使用的MimeMessage中信息内容是文本的话,我们便可以直接使用setText()方法来方便的设置文本内容。 message.setText(lgpzll); 前面所讲的两种方法,对于文本信息,后者更为合适。而对于其它的一些信息类型,比如HTML信息,则要使用前者。 使用setSubject()方法对邮件设置邮件主题:message.setSubject(First); DAdd

34、ress 像Message一样,Address类也是一个抽象类,所以使用javax.mail.internet.InternetAddress这个子类。 通过传入代表邮件地址的字符串,我们可以建立一个邮件地址类: Address address = new InternetAddress(lgpzll); 如果要在邮件地址后面增加名字的话,可以通过传递两个参数:代表邮件地址和名字的字符串来建立一个具有邮件地址和名字的邮件地址类: Address address = new InternetAddress(lgpzll , lgpzll); 在建立了邮件地址类后,我们通过message的setF

35、rom()和setReplyTo()两种方法设置邮件的发信人: message.setFrom(address); message.setReplyTo(address); 若在邮件中存在多个发信人地址,我们可用addForm()方法增加发信人: Address address =”;message.addFrom(address); 为了设置收信人,我们使用addRecipient()方法增加收信人,此方法需要使用Message.RecipientType的常量来区分收信人的类型: message.addRecipient(type, address) 下面是Message.Recipien

36、tType的三个常量: Message.RecipientType.TO 收件人Message.RecipientType.CC 抄送人Message.RecipientType.BCC 发件人EAuthenticator 像类那样,JavaMail API通过使用授权者类(Authenticator)以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是指邮件服务器。在 javax.mail包中可以找到这个JavaMail的授权者类(Authenticator)。 在使用Authenticator这个抽象类时,我们必须采用继承该抽象类的方式,并且该继承类必须具有返回 Password

37、Authentication对象(用于存储认证时要用到的用户名、密码)getPasswordAuthentication()方 法。并且要在Session中进行注册,使Session能够了解在认证时该使用哪个类。 下面代码片断中的MyAuthenticator就是一个Authenticator的子类。 Properties props = new Properties(); Authenticator auth = new MyAuthenticator(); Session session = Session.getDefaultInstance(props, auth); FTranspo

38、rt 在发送信息时,Transport类将被用到。这个类实现了发送信息的协议(通称为SMTP),此类是一个抽象类,我们可以使用这个类的静态方法send()来发送消息: Transport.send(message); 也可由Session获得相应协议对应的Transport实例。并通过传递用户名、密码、邮件服务器主机名等参数建立与邮件服务器的连接,并使用sendMessage()方法将信息发送,最后关闭连接: message.saveChanges(); Transport transport = session.getTransport(smtp); transport.connect(ho

39、st, username, password); transport.sendMessage(message, message.getAllRecipients(); transport.close(); 如果需要在发送邮件过程中监控mail命令的话,可以在发送前设置debug标志: session.setDebug(true)。 GStore和Folder 接收邮件和发送邮件很类似都要用到Session。但是在获得Session后,我们需要从Session中获取特定类型的Store,然后连接到Store,这里的Store代表了存储邮件的邮件服务器。在连接Store的过程中,极有可能需要用到用

40、户名、密码或者Authenticator。 Store store = session.getStore(pop3); store.connect(host, username, password); 在连接到Store后,一个Folder对象即目录对象将通过Store的getFolder()方法被返回,我们可从这个Folder中读取邮件信息: Folder folder = store.getFolder(INBOX); folder.open(Folder.READ_ONLY); Message message = folder.getMessages(); 首先从Store中获得INBO

41、X这个Folder(对于POP3协议只有一个名为INBOX的Folder有效),然后以只读(Folder.READ_ONLY)的方式打开Folder,最后调用Folder的getMessages()方法得到目录中所有Message的数组。对于POP3协议只有一个名为INBOX的Folder有效,而对于IMAP协议,我们可以访问多个Folder而且SUN在设计Folder的getMessages()方法时采取了很智能的方式:首先接收新邮件列表,然后再需要的时候(比如读取邮件内容)才从邮件服务器读取邮件内容。 在读取邮件时,我们可以用Message类的getContent()方法接收邮件或是wri

42、teTo()方法将邮件保存,getContent()方法只接收邮件内容(不包含邮件头),而writeTo()方法将包括邮件头。 在读取邮件内容后,关闭Folder和Store。 folder.close(boolean);store.close(); 传递给Folder.close()方法的boolean 类型参数表示是否在删除操作邮件后更新Folder。 2.5.5 使用JavaMail API (1)发送邮件 在获得了Session后,建立并填入邮件信息,然后发送它到邮件服务器。这便是使用Java Mail API发送邮件的过程,在发送邮件之前,我们需要设置SMTP服务器:通过设置Prop

43、erties的mail.smtp.host属性。 String host =”;String from =”;String to =”;Properties props = System.getProperties(); props.put(mail.smtp.host, host); Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from); messag

44、e.addRecipient(Message.RecipientType.TO, new InternetAddress(to); message.setSubject(lgpzll); message.setText(lgpzll); Transport.send(message); (2)接收邮件 读取邮件,获得session,并且连接到了邮箱的相应store,打开相应的Folder,然后得到想要的邮件,结束时关闭连接。 String host =”;String username =”;String password =”;Properties props = new Propertie

45、s(); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore(pop3); store.connect(host, username, password); Folder folder = store.getFolder(INBOX); folder.open(Folder.READ_ONLY); Message message = folder.getMessages(); folder.close(false); store.close(); 2.5.6 邮件认证

46、 我们在此取代了直接使用邮件服务器主机名、用户名、密码这三个字符串作为连接到POP3 Store的方式,使用存储了邮件服务器主机名信息的属性文件,并在获得Session时传入自定义的Authenticator实例: Properties props = System.getProperties();props.put(mail.pop3.host, pop3Server);Session mailsession = Session.getDefaultInstance(props,new CheckPassword(userName, password);Store store = mails

47、ession.getStore(pop3);store.connect(pop3Server, userName, password);CheckPassword类继承了抽象类Authenticator,并且通过重载Authenticator类的 getPasswordAuthentication()方法返回PasswordAuthentication类对象。而 getPasswordAuthentication()方法的参数param是以逗号分割的用户名、密码组成的字符串。 package com.mail.othermail;import javax.mail.Authenticator;

48、import javax.mail.PasswordAuthentication;public class CheckPassword extends Authenticator String username;String password;public CheckPassword() public CheckPassword(String username, String password) this.username = username;this.password = password;protected PasswordAuthentication getPasswordAuthen

49、tication() return new PasswordAuthentication(username, password);public String getUsername() return username;public void setUsername(String username) this.username = username;public String getPassword() return password;public void setPassword(String password) this.password = password;第3章 概要设计基于Web的电

50、子邮件系统概要设计由我的搭档实现。第4章 详细设计与编码实现4.1 程序包的结构com.mail.dao中是所有接口com.mail.filter中是过滤器com.mail.impl中是所有接口的实现com.mail.othermail中是管理其他邮箱com.mail.page中是分页的处理类com.mail.struts.action中是业务逻辑 com.mail.struts.form中是form表单com.mail.util中是工具类com.mail.vo中是实体类4.2系统的功能模块的详细设计与实现4.2.1 用户注册登录模块(1)用户注册登陆模块详细设计公共Action如下图所示,所

51、有的Action都继承自BaseAction,在Action中使用super.getCurrentUser()可以从session中获取用户的实例。图4-1 公共ActionFig.4-1 Public Action用户实体类User如下图所示 图4-2 用户实体类Fig.4-2 the entity of User用户首先注册然后登陆,登陆后可以修改密码,用户注册登陆模块的UserAction如下图所示图4-3 用户ActionFig.4-3 the action of UserAction用户注册登陆模块Action中的方法实现调用接口IUserDAO中的方法,IUserDAO接口中的方法

52、由IUserDAOImpl具体实现,IUserDAO如下图所示图4-4 用户模块接口Fig.4-4 the interface of user module(2)用户注册登陆模块的实现方式A用户注册用户打开网站即进入用户登陆页面,如果用户没有注册那么注册调用UserAction中的register(),将注册信息封装到实体User的一个对象中,通过IUserDAO的register()保存这个对象,持久化到数据库中。B用户登陆用户成功注册后输入正确的用户名和密码就可以登陆系统,调用UserAction中的login()方法,将登陆的用户名和密码传递给IUserDAO中login(),判断用户是

53、否存在,如果用户存在并且密码正确那就向session中写入user这个实例,跳转到邮箱主页,如果用户不存在或密码不正确提示用户,让用户重新输入。C用户退出调用UserAction中的logout()方法,从session中删除当前用户实例,返回到用户登陆页面。D找回密码当用户忘记密码的时候点击找回密码调用UserAction中的findPassword()将你的用户名传递进去,然后调用IUserDAO中的findUser(String userName)查询数据库这个用户是否存在,如果存在查询出密码保护问题和答案,将密码保护问题显示给用户,让用户输入答案,如果用户的答案和数据库中的答案一致那么

54、调用IUserDAO中的findPassword()方法更新用户密码。E修改密码用户登陆成功后可以修改用户密码,调用UserAction中的updatePasswordInput转向到更新密码页面,更新密码调用UserAction中的updatePassword()。 4.2.2 站内接收邮件模块(1)站内接收邮件模块详细设计站内新邮件、收件箱、垃圾箱、已删除实体类Receive,如下图所示图4-5 收件箱实体类Fig.4-5 the entity of Inbox其中status字段不同的的值代表邮件所在的邮箱,0代表新邮件在新邮件里,1代表已读在收件箱里,2代表垃圾邮件在垃圾箱里,3代表已

55、删除在已删除里。用户登陆后可以收邮件,移动邮件,删除邮件,查看邮件,站内接收邮件模块ReceiveAction如下图所示图4-6 收件箱ActionFig.4-6 the action of Inbox站内接收邮件模块ReceiveAction中的方法实现调用接口IReceiveDAO中的方法,IReceiveDAO接口中的方法由IReceiveDAOImpl具体实现,IReceiveDAO如下图所示图4-7 收件箱模块接口Fig.4-7 the Inbox interface module(2)站内接收邮件模块的实现方式A新邮件用户登陆成功后点击新邮件调用ReceiveAction中的new

56、receive()方法,通过IReceiveDAO中的queryAllNew()查询我所有新的邮件,即标记字段为0的邮件。B收件箱调用ReceiveAction中的AllMail方法查询我所有的没有在垃圾箱和已删除中的邮件,即查询已读和未读邮件,通过IReceiveDAO中的queryAll()实现。已删除:调用ReceiveAction中的hasDel()方法查询我已删除邮件,通过IReceiveDAO中hasDel()实现。D垃圾箱调用ReceiveAction中的dustbinbox()方法查询我所有垃圾箱中的邮件,通过IReceiveDAO中的queryAllDustbin()方法实现

57、E读取邮件点击收到的邮件标题,进入查看邮件详细信息,调用ReceiveAction中的find()方法实现,find()方法中传递邮件id通过IReceiveDAO中的query()方法查看邮件详细信息。移动到垃圾箱:调用ReceiveAction中的dustbin()方法,传递邮件id,通过IReceiveDAO中的dustbin()方法设置邮件的状态为2。F删除邮件只是删除到已删除,调用ReceiveAction中SetDel()方法,传递邮件id,通过IReceiveDAO中的setdelete()方法设置邮件状态为3。G永久删除删除数据库中数据,不能找回,调用ReceiveAction

58、中的del(),传递邮件id,通过IReceiveDAO中的delete()方法删除数据库中的记录。4.2.3 其他邮箱模块(1)其他邮箱模块详细设计其他邮箱主要是收取其他邮件服务器上的邮件,需要Internet支持,可以添加其他邮箱、管理其他邮箱,接收邮件,查看邮件,删除邮件,回复邮件,使用其他邮箱发信等功能。用户邮件地址实体类Mail,如下图所示图4-8 用户地址实体类Fig.4-8 the entity of User Address邮件服务器实体类Server,如下图所示图4-9 邮件服务器实体类Fig.4-9 the entity of mail Server 其他邮箱业务逻辑和实现

59、OtherMailAction,如下图所示图4-10 其他邮箱ActionFig.4-10 the action of OtherMailAction其他邮箱列表显示邮件、显示邮箱相信、删除邮件业务逻辑实现EmailAction,如下图所示图4-11 邮件ActionFig.4-11 the action of EmailAction邮件处理类EmailManage,如下图所示,主要获取从服务器上下载的邮件列表、计算邮件数量、查看邮箱详情、发送邮件图4-12 邮件处理Fig.4-12 Mail handling创建用户类UserManage,如下图所示,主要创建用户邮件目录,登陆邮箱启动接收邮

60、件线程图4-13 创建用户Fig.4-13 Create user邮件解析工具类ParseMimeMessage,如下图所示,主要对下载到服务器上的eml格式的邮件进行解析,获取其中的信息。图4-14 邮件解析Fig.4-14 E-mail Analysis从其他邮件服务器接收邮件类ReceiveMail,如下图所示,主要以线程的方式只读下载邮件到本地服务器。图4-15 邮件接收Fig.4-15 Receive e-mail用户添加其他邮箱存贮其他邮箱IMailDAO如下图所示图4-16 邮件地址接口Fig.4-16 E-mail address of the user interface邮件

61、服务器IServerDAO如下图所示图4-17 邮件服务器接口Fig.4-17 Mail server interface(1)其他邮箱模块实现方式A添加其他邮箱用户登陆系统后添加其他邮箱,首先调用OtherMailAction中的index()方法,通过IServerDAO的QueryServerAll()查询支持的邮件服务器,然后调用OtherMailAction中的addMail()方法,将Mail的实例传递给IMailDAO的insert()方法添加其他邮件,添加本系统所支持的邮件服务器邮箱。B管理其他邮箱用户点击管理邮箱后调用OtherMailAction中adminMail()通过

62、IMailDAO中的queryByND()查询我的其他邮件地址,通过IServerDAO的QureyServerByDomain()方法查询我的邮件所在本地服务器的目录,将目录作为参数传递给EmailManage的getMailCountLoc()方法查询我当前邮件地址所在本地服务器的邮件数量,并将其他邮件地址和邮件数量列表显示在页面。D接收邮件调用OtherMailAction中DownMail()方法从邮件服务器上下载邮件,首先通过通过IMailDAO中的queryByND()查询我的其他邮箱的邮箱用户名和用户密码以及域名,然后通过IServerDAO的QureyServerByDomain()方法查询当前对应我邮件地址域名的邮件服务器的pop地址,将这些作为参数传递给UserManage的ReceiveMail()方法,这里采用JavaMail API的接口登陆邮件服务器,这里创建一个ActiveUser的对象,然后根据用户名,本地邮件服务器目录,域名创建当前用户的目录,启动新线程ReceiveMail接收邮件,这

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!