毕业论文_基于WEB的电子邮件系统邮件协议研究与系统功能实现_第1页
毕业论文_基于WEB的电子邮件系统邮件协议研究与系统功能实现_第2页
毕业论文_基于WEB的电子邮件系统邮件协议研究与系统功能实现_第3页
毕业论文_基于WEB的电子邮件系统邮件协议研究与系统功能实现_第4页
毕业论文_基于WEB的电子邮件系统邮件协议研究与系统功能实现_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、本科毕业论文(设计)基于wee的电子邮件系统邮件协议研究与系统功能实现计算机与信息科学学院软件工程导教师年4月20日基于web的电子邮件系统邮件协议研究与系统功能实现摘要:通过分析javamai 1的实现原理,采用开源框架struts, spring, hibernate和面向对象 的方法实现基于web的电子邮件系统功能。论文研究了接收邮件的和解析邮件的工作原理,并阐述 了如何实现。本系统中我主要负责用户注册、登陆、退出、接收站内信、读取站内信、移动站内信、 删除站内信、设置其他邮箱、收取其他邮箱邮件、解析其他邮箱邮件、删除其他邮箱邮件、系统管 理等功能的实现。关键词:javama订;stru

2、ts; spring; hibernatee-mail system based on web with e-mail protocol and system functionsabstract: through analysis 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

3、 receive e-mail messages and the work of analytic theory, and explained how to achieve it. this system is mainly 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

4、mail to other e-mail, mail resolve to delete the other e-mail messages, the system management functions to achievekeywords: 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

5、第2章 系统开发相关技术72. 1 struts 简介72. 1. 1 优点:72. 1.2 缺点:72.2spring简介82. 3hibernate 简介82.4 mvc 简介92.5 javamai 1 api 研究92. 5. 1 javamai 1 api 简介92. 5.2相关协议一览92.5.3 javamai 1 安装112.5.4 javamai 1 api详解112.5.5 使用 javamai 1apt152. 5.6邮件认证16笫3章概要设计17第4章详细设计与编码实现184. 1程序包的结构184. 2系统的功能模块的详细设计与实现184. 2. 1用户注册登录模块1

6、84. 2.2站内接收邮件模块204.2.3其他邮箱模块234.2.4系统管理模块28笫5章结论29第6章参考文献3()第7章致谢32第1章引言1.1基于web的电子邮件选题目的和意义电子邮件是80年代初新起的一种基丁计算机网络技术,采用存储和传发方式传递交换 信息的快捷,高效,廉价的电了信息业务,是计算机互联网系统中提供的一项基本服务。 电子邮件作为一种现代化通信工具可以传递文字,图表,声音,电影等各类信息,其传 递速度也是传统邮件所无法比拟的。其主要应用领域是电子邮件服务。用户将要发送的 信息以规定的格式通过通信网络发送到收信人的信箱中,信箱实际上与通信网络相连的 计算机存储器,收信人可以

7、通过通信网络随时打开自己的信箱,看到别人发来的信件, 同时可以利用0己的信箱写回信或发送信件。屯子邮件服务在信息的交流,传播,检索,管理等领域的应用越來越广泛,随着电 子邮件数量的增加,需求多样化,电子邮件技术的发展趋势也越趋于更细致化,更复杂 化。作为电子邮件的信息服务平台的邮件系统使整个电子邮件世界的核心,也是个性化 增值信息服务的关键技术。电子邮件系统是在模拟邮政系统基础上,汲取电报,电传, 传真技术和计算机信息技术的精华,利于处处转发的通信方式,在开放系统互联国际标 准中形成为网络用于传送消息和文件提供一个可靠,异步,垮平台的机制,可以实现点 到点和点到多结点上的网络用户间的通信。电子

8、邮件系统经过儿十年的发展,已经形成了完善的技术体系。电子邮件系统的发 展经丿力了远程登陆模式,专用客服端模式,基丁 web的模式,目前正向wap模式迁移。 随着互联网的飞速发展,电了邮件的用户数量也业务量的急增,种类繁多的商业增值服 务需求以及用户对服务种类的智能化需求,向负载它们的电子邮件系统服务的种类,容 量,技术支持,付费方式等方面提出了挑战。邮件服务系统在保留了电子邮件系统最初 的收发邮件,邮件存储等基本功能的同时,融入了最新的计算机与网络技术,是电子邮 件系统有了全新的改观。电了邮件已经成为人们喜爱的通信方式z-,是信息交流的重要手段z,也是单 位加强信息交流的重要手段。在我国信息化

9、的过程中,邮件系统已经成为信息系统中必 不可少的一部分。传统的邮件系统分为邮件服务器和客服端,即client/server (c/s) 结构。用户通过邮件客户端來接受和发送邮件。近年来随着web技术的不断成熟,采用 浏览器和服务器browser/server形式的软件层出不穷,并在实际应用屮得到了良好的 效果。b/s结构同传统的c/s结构相比具有对客户机的低要求,较低的开发成本,方便 的维护,软件的高复用性等优点。因此,系统采用b/s结构,即用户以web方式进行接收和发送邮件。1.2基于web的电子邮件国内外研究现状国内很多企事业单位都有自己的邮件服务系统,免费邮箱有163,新浪等,用户对电子

10、 邮件安全性、可靠性及功能上的要求也在不断提高。因此,电子邮件服务供应商必须提 供更安全、更可靠、功能更丰富的服务,才能发展业务,吸引用户,从众多竞争者中脱 颖而出。如何构建高效、稳定、安全、易用、可扩展、功能丰富的电子邮件系统是众多 电信运营商、isp (internet service provider) > icp (internet content provider)共 同面临的问题。邮件服务器供应商致力于以下几个方面提高邮件服务功能:(1) 增加多用户模板的功能,以满足不同用户对界面的不同喜好,如提供多种邮件 webmail页面风格,提供个性化模板和多风格信纸,用户可以定义邮件

11、系统界面等。(2) 增加防病毒模块,以增加e-mail系统整休的安全性,利用邮件加密和邮件签名等方 法进行邮件传送。在服务器端使用防病毒模块。将电子邮件系统向统-信息系统发展, 加入最新资讯,多媒体等功能。反垃圾邮件为用户提供反垃圾邮件的多种过滤器,充分 保证用户收到最低限度的垃圾邮件骚扰。1. 3基于web的电子邮件系统开发研究方法与策略(1) 查看163邮箱、qq邮箱等,研究它们的实现方式,结合自己要实现的系统找到合适 的切入点。(2) 本课题要求对 mvc 有一定的掌握,熟悉 struts、spring、hibernate、mysql> tomcat 的使用,以及有较强的门学能力和

12、熟练使用myelipsc开发环境的能力。(3) 对于技术难题先查资料,找不到答案询问同学和老师,请求帮助。1. 4基于web的电子邮件系统软件开发的可行性 (d技术可行性 本系统主要用到开源框架struts、spring、hibernate,冇很多的书籍和资料介绍如何 使用这些框架,java是口前较为流行的技术,有一定的编程基础就能快速学习java, 所以在技术上是可行的。(2) 经济可行性由于本系统是本科毕业设计的题目,这样的系统对于大多数企业來说不用花费高昂的代 价去架设企业邮箱,企业可以使用我们开发的系统。我们本科生也有充裕的时间去开发 这样的一个系统,只需要一台电脑和人力,不需要很大的

13、投资。所以在经济上是可行的。(3) 操作可行性本系统采用当前最为流行的技术struts+spring+hibernate框架去实现,扩展性很强, 对于以后有比较好的特性也能很快速和方便的添加上去,所以在操作上是可行的。1. 5系统开发与运行环境1.5.1系统开发环境(1) java 环境采用的是jdk1.6,我们要开发的系统是基于j2ee,需要安装j2se, j2se sdk是开发任 何java系统必须安装的工具包。(2) 数据库采用的是mysql5. 1, mysql是最受欢迎的开源sql数据库管理系统,是一个快捷的、可 靠的和易于使用的数据库服务器。(3) web服务器采用的是tomcat

14、6. 0. 18解压版本,tomcat是apache-jarkarta的一个子项目,是一个 免费的、开放源码的、支持jsp和servlet技术的容器,它同时又是一个web服务器软 件。tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持 负载平衡与邮件服务等开发应用系统常用的功能otomcat是一个小型的轻量级应用服务 器,在屮小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试jsp程 序的首选。(4) 集成开发工具myeclipsemyeclipsc是冃而最流行的j2ee应用集成开发工具。myeclipse 经出现就以其功能强 人、插件丰富的特性赢得了认

15、可,其主要的属性冇强人的插件功能、代码重构和代码自 动生成功能、快速修复错误、调整/组织导入包、弹出窗口进行代码自动装配。曲于功 能强大,myeclipse成为j2ee ide领域的霸主,它能够很好地与mysql、tomcat进行集 成。本系统中我们选用myeclipse70作为开发工具。1.5.2软件运行环境(1) 软件系统环境windows xp操作系统、linux系统。(2) 硕件系统坏境普通的计算机,局域网,以及能够连接上的tnterneto第2章系统开发相关技术2. 1 struts 简介struts只是一个mvc框架(framework),用于快速开发java web应用。stru

16、ts实现的 重点在 c(controller),包括 actionservlet/requestprocessor 和我们定制的 action, 也为v(vicw)提供了一系列定制标签(custom tag)。但struts几乎没有涉及m(model), 所以struts可以采用java实现的任何形式的商业逻辑。2.1.1优点:struts跟tomcat、turbine等诸多apache项目一样,是开源软件,这是它的一大 优点。使开发者能更深入的了解其内部实现机制。taglib和页面导航o taglib是struts的标记库,灵活动用,能大大提高开发效率。 另外,就目前国内的jsp开发者而言,

17、除了使用jsp自带的常用标记外,很少开发自己 的标记,或许struts是一个很好的起点。关于页面导航,我认为那将是今后的一个发 展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个 系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接 手这个项口时,这种优势体现得更加明显。2.1.2缺点:taglib是struts的一大优势,但对丁初学者而言,却需耍一个持续学习的过程, 甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒o struts 将mvc的controller-分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。

18、虽然它现在还有不少缺点,但它是一种非常优秀的j2ee mvc实现方式。2. 2 spring 简介spring 是一个轻型容器(light-weight container),-其核心是 bean t.) (bean factory),用以构造我们所需要的m(model) o在此基础之上,spring提供了 aop (aspect-oriented programming, iflj'向层面的编程)的实现,用它來提供非管理坏境 下申明方式的事务、安全等服务;对bean _l厂的扩展appl icationcontext更加方便我 们实现j2ee的应用;dao/orm的实现方便我们进行数

19、据库的开发;web mvc和spring web 提供了 java web应用的框架或与其他流行的web框架进行集成。2. 3 hibernate 简介hibernate顾名思义冬眠的意思,相信它的创造者的用意在于用这个工具将数据库连接 持久化层冬眠,关于hibernate网上争论很多,有人说其为工具,有人说其为框架,我 相信一个人有一个人理解问题的角度,只要处理问题的方法正确就可以了。hibernate 是采用0ri映射机制的持久层开发工具,它是java应用和关系数据库之前的桥梁,负 责java对象和关系数据之间的映射。内部封装了 jdbc访问数据库的操作,向上层应用 捉供了而向对彖的数据库

20、访问api,在java应用中使用到hibernate包含如下步骤。(1) 创建hibernate配置文件(2) 创建持久类(3) 创建对象一关系一映射文件(4) 通过hibernateapi编写访问数据库的代码如杲想了解hibernate或者是要学习它的人必须要首先了解两个比较重要的概念:(1) pojo:在hibernate中理解为数据库表所对应的domain object,如杲从了面上理解 就是无格式普通java对象,简单的理解就是一个不包含逻辑代码的值对象。从数据层 面上看,pojo作为数据实体的对象化表现形式,也成为实体。(2) orm: orm可以理解成一种机制也可以理解成一种模式,

21、对象一关系一映射,我个人 觉得如呆想理解它可以和mvc比较,模型一视图一控制。orm是把对象和关系数据库映 射到一起,而mvc是把视图和模型控制在一起。创建hibernate的配置文件hibernate从卩读取和数据库连接的相关信息,这个配置文 件应该位于应用的classpath中,主要有两种形式xml格式和.properteis信息文件。 创建持久化类就是指需要被hibernate持久化到数据库屮的类,持久化类通常都是模型 中的实体类,符合javabcan的规范,包含一些属性,以及与z对应的get、set方法。2. 4 mvc简介mvc是三个单词的缩写,分别为:模型(model),视图(vi

22、ew)和控制controller)。mvc模式的目的就是实现web系统的职能分工。model层实现系统中的业务逻辑, 通常可以用javabean或ejb来实现。view层用于与用户的交互,通常用jsp來实现。 controller层是model与view之间沟通的桥梁,它可以分派用户的请求并选择恰当的 视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。2.5 javama订 api 研究2. 5. 1 javamail api 简介javamail api是读取、撰写、发送电子信息的可选包。我们可用它来建立如eudora. foxmail > ms outloo

23、k express 一般的邮件用户代理程序(mail user agent,简称 mua)。 而不是像sendma订或者其它的邮件传输代理(mail transfer agent,简称mta)程序 那样可以传送、递送、转发邮件。从另外一个角度来看,我们这些电子邮件用户fi常用 mua程序来读写邮件,ffnmua依赖着mta处理邮件的递送。2. 5. 2相关协议一览4大信息传输协议:smtp、pop、imap、mime,上血的4个协议,并不是全部,还有 nntp和其它一些协议可用于传输信息,但是由于不常用到,所以本文便不提及了。理解 这4个基木的协议有助于我们更好的使用javamail api。

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

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

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

27、 nntp和其它的第三方协议javama订apt在设计时考虑到与第三方协议实现提供商之间的分离,我们可以很容易的 添加一些第三方协议。2. 5. 3 javamail 安装(1) 安装 javamail为了使用javamail api,需要下载文件名格式为javamail-version, zip的文件(这 个文件中包插了 javamail实现),并将其屮的mail, jar文件添加到classpath中。这 个实现提供了对smtp、imap4、pop3的支持。(2) 安装 javabeans activation freimework在安装了 javamail之后,我们还需耍安装javabe

28、ans activation framework,因为这个 框架是javamail api所需要的。如果我们使用j2ee的话,那么我们并无需单独下载 javamail,因为它存在于j2ee. jar中,只需将j2ee. jar加入到classpath即可。此框 架增加了对任何数据块的分类、以及对它们的处理的特性。这些特性是javama订api 需要的。2.5.4 javamail api 详解(1) javamail 环境a. javamail核心类结构在 javax. ma订的包下面存在着一些核心类:session>message>address>authenticator

29、> transports store、folder。而且在 javax. mail, internet 包中还有一些常用的子类。b. sessionsession类定义了基本的邮件会话,就像http会话那样,我们进行收发邮件的工作都是 基于这个会话的。session对象利用了 java. util. properties对象获得了邮件服务器、 用户名、密码信息和整个应用程序都要使用到的共享信息。session类的构造方法是私冇的,所以我们可以使用session类捉供的 gctdcfaultlnstancc ()这个静态工厂方法获得一个默认的session对象:properties pro

30、ps 二 new properties();session session 二 session.getdefaultlnstanee(props, null);或者使用getlnstance()这个静态工厂方法获得口定义的session:properties props = new properties();scssion scssion 二 scssion.gctlnstancc(props, null);c. message当我们建立了 session对象后,便可以被发送的构造信息体了。在这里sun提供了 message类型来帮助开发者完成这项工作。由于message是一个抽象类,大多数情

31、况下, 我们使用javax. mail, internet. mimemessage这个子类,该类是使用mime类 型、mime 信息头的邮箱信息。信息头只能使用us-asc11字符,而非ascii字符将通过编码传换 为ascii的方式使用。为了建立一个mimemessage对象,我们必须将session x寸象作为mimemessage构造方法 的参数传入:mimemessage message = new mimemessage(session);注意:对f mimemessage类来讲存在着多种构造方法,比如使用输入流作为参数的构造 方法。在建立了 mimemessage对象后,我们需要

32、设置它的各个part, xj"于mimemessage类来说, 这些part就是mimepart接口。最基木的设置信息内容的方法就是通过表示信息内容和 米么类型的参数调用setcontent ()方法:message setcontent (“lgpzll", "text/plain");然而,如果我们所使用的mimemessage中信息内容是文本的话,我们便可以直接使用 settexto方法來方便的设置文本内容。message. settext(lgpzll);前面所讲的两种方法,对于文本信息,后者更为合适。而对于其它的一些信息类型,比 i html信

33、息,则耍使用前者。使用sctsubjcct ()方法对邮件设置邮件主题:message. setsubject (z,first);d. address像 message 一样,address 类也是一个抽象类,所以使用 javax mai 1. internet internetaddress 这个子类。通过传入代表邮件地址的字符串,我们可以建立一个邮件地址类:address address 二 new internetaddress("lgp?d163. com");如果要在邮件地址后面增加名字的话,可以通过传递两个参数:代表邮件地址和名字的 字符串来建立一个具有邮件地

34、址和名字的邮件地址类:address address = new internetaddress(lgpzll “,"lgpzll");在建立了邮件地址类后,我们通过message的sctfrom()和sctrcplyto ()两种方法设置 邮件的发信人:message. setfrom(address);message setreplyto(address);若在邮件中存在多个发信人地址,我们可用addformo方法增加发信人:address address二” ”;message. addfrom(address);为了设置收信人,我们使用addrecipiento方法

35、增加收信人,此方法需要使用message. recipienttype的常量来区分收信人的类型:message addrecipient(type, address)卜面是message. recipienttype的三个常量:message. recipienttype. to 收件人message. recipienttype. cc 抄送人message recipienttype bcc 发件人e authenticator像java, net类那样,javama订api通过使用授权者类(authenticator)以用户名、密 码的方式访问那些受到保护的资源,在这里“资源”就是指邮件

36、服务器。在javax.mail 包屮可以找到这个javamail的授权者类(authenticator)o在使用authenticator这个抽象类时,我们必须采用继承该抽象类的方式,并口该继承 类必须具有返凹passwordauthentication对彖(用于存储认证时耍用到的用户名、密 码)getpasswordauthentication()方 法。并且要在 scssion 中进行注册,使 session 能够了解在认证时该使用哪个类。下面代码片断屮的myauthenticator就是一个authenticator的子类。properties props = new propertie

37、s();authenticator auth = new myauthenticator();scssion scssion 二 scssion. getdcfaultlnstancc (props, eiuth);f. transport在发送信息时transport类将被用到。这个类实现了发送信息的协议(通称为smtp), 此类是一个抽象类,我们可以使用这个类的静态方法sendo来发送消息:transport, send (message);也可由session获得相应协议对应的transport实例。并 通过传递用户名、密码、邮件服务器主机名等参数建立与邮件服务器的连接,并使用 send

38、message ()方法将信息发送,最后关闭连接:message. savechanges();transport transport 二 session.gettransport("smtp");transport connect(host, username, password);transport.sendmessage(message, message.getallrccipicnts();transport. close ();如果需要在发送邮件过程屮监控mail命令的话,可以在发送前设置debug标志: session.setdebug( true)。g. st

39、ore 和 folder接收邮件和发送邮件很类似都耍用到scssiono但是在获得session后,我们需耍从 session中获取特定类型的store,然后连接到store,这里的store代表了存储邮件的 邮件服务器。在连接store的过程屮,极有可能需要用到用户名、密码或者 authenticatot。store store = session.getstore(pop3);store. connect (host, uscrrmnic, password);在连接到store后,一个folder x寸象即目录对象将通过store的getfolder ()方法被返 冋,我们可从这个fol

40、der中读取邮件信息:folder folder = store.getfolder (“inbox");folder.open(folder. read_0nly);message messagee = folder, gctmcsseigcs();首先从store中获得tnbox这个folder (对于pop3协议只右一个名为tnbox的folder 有效),然后以只读(folder. readonly)的方式打开folder,最后调用folder的 getmessages ()方法得到目录中所有message的数组。对于pop3协议只有一个名为inbox 的folder有效,而

41、对于imap协议,我们可以访问多个folder而且sun在设计folder 的getmessages()方法时采取了很智能的方式:首先接收新邮件列表,然后再需耍的时 候(比如读取邮件内容)才从邮件服务器读取邮件内容。在读取邮件时,我们可以用message类的getcontent ()方法接收邮件或是writetoo方 法将邮件保存,getcontent ()方法只接收邮件内容(不包含邮件头),而writeto()方法 将包括邮件头。在读取邮件内容后,关闭folder和store。folder, close(boolean);store, close ();传递给folder, close0方法

42、的boolean类型参数表示是否在删除操作邮件后更新 folder。2. 5. 5 使用 javamail api(1)发送邮件在获得了 session后,建立并填入邮件信息,然后发送它到邮件服务器。这便是使用java mail apt发送邮件的过程,在发送邮件之前,我们需要设置smtp服务器:通过设置 properties 的 mail. smtp. host 属性。string host 二” ”;string from =” "string to 二” ”;properties props = system. getproperties(); props, put (/zmai

43、l. smtp. host", host);session session 二 session. getdefaultlnstance(props, null);mimcmcssagc message = new mimcmcssagc(session);message. setfrom(new internetaddress (from);message. addrecipient (message. recipienttype. to,new internetaddress(to);message. setsubject;message- scttcxt (,lgpzll,z);

44、treinsport. send (message);接收邮件读取邮件,获得session,并且连接到了邮箱的相应store,打开相应的folder,然后 得到想要的邮件,结束时关闭连接。string host =” "string username 二” ”;string password 二"properties props = new properties();session session 二 session.getdefaultlnstance(props, null);store store = session. getstore (/zpop3,z);stor

45、e.connect (host, username, password);folder folder = store. gctfoldcr (z/inboxz,); folder, open(folder. read only);message messaged 二 folder. getmessages (); folder, close (false);store, close ();2.5.6邮件认证我们在此取代了直接使用邮件服务器主机名、用户名、密码这三个字符串作为连接到 pop3 store的方式,使用存储了邮件服务器主机名信息的属性文件,并在获得session 吋传入自定义的aut

46、henticator实例:properties props 二 system. getproperties();props, put (zzmail. pop3. host", pop3server);session mailscssion = session.gctdcfaultlnstancc(props,new checkpcissword (username, password);store store = maiisession getstore (pop3); store.connect (pop3server, username, password);checkpass

47、word类继承了抽象类authenticator,并且通过重载authenticator类的 gctpasswordauthcntication () 方 法返回 pas sword a ut hcntica tion 类 对彖。fl getpeisswordauthenticcition ()方法的参数param是以逗号分割的用户名、密码组成的 字符串。package com. mail, othermail;import javax. mail. authenticator;import javax. mail. passwordauthcntication;public class ch

48、eckpassword extends authenticator string username;string password;public checkpassword() public checkpassword(string username, string password) this-username 二 username;this.password = password;protected passwordauthentication getpasswordauthentication() return new passwordauthentication(username, p

49、assword);public string getuserrmme() 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的电子邮件系统概要设计由我的搭档实现。第4章详细设计与编码实现4. 1程序包的结构com. ma订.dao中是所有接口

50、com. mail, filter中是过滤器com. mail, impl中是所有接口的实现com. mail, othermail中是管理其他邮箱com. mail, page屮是分页的处理类com. mail. struts, action 中是业务逻辑com. mail, struts, form 中是 form 表单com. mail, ut订中是工具类com. mail, vo中是实体类4. 2系统的功能模块的详细设计与实现4. 2.1用户注册登录模块(1)用户注册登陆模块详细设计公共action如下图所示,所冇的action都继承自baseaction,在action中使用 sup

51、er. gctcurrcntuscr ()可以从scssion中获取用户的实例。图4t公共actionfig.4-1 public action用户实体类user如下图所示user id ; integer username : string password : string realname s string sex ; integer phone : string answer ; string registertime : string logintime : string problem s string size ; string图4-2用八实体类fig.4-2 the entit

52、y of user用户首先注册然后登陆,登陆后可以修改密码,用户注册登陆模块的useraction如下 图所示useraction iuserdao : iuserdaog register(in request s hitpservlelrequesun response : httpservletresponx)0 login(in request : hupservi elrequesli n response : hu pservletre sponse)q logout(in request; httpservletrequestin respon%已 httpservletkesp

53、onse)令 updat epass word input(in request : hit pservletre quest jn response : httpservletr esponse)0 updat epa55 word (in request : httpservletrequeslin response : httpservletresponse)0 findpa5sword(in request : httpservletrequesbin response : httpservietresponse)© gehuserdaoo : iuserdao 5euuse

54、rdao(in iuserdo iuserdao) i void图4-3用户actionfig.4-3 the action of useraction用户注册登陆模块action中的方法实现调用接口 tuserdao中的方法,tuserdao接口中 的方法由iuserdaoimpl具体实现,iuserdao如下图所示q< <interface > >iuserdaoq registerqn user! user) ! void令 login(in username : stringjn password string) userg findu5er(in userna

55、me : slringjn password : string) : userg findpaeeword(in username : stringjn newpassword : string) : userg updat epass word (in username : string jn oldpassword : stringjn newpassword : string) : voidq finduserfin username ! siring)! user图4-4用户模块接口fig.4-4 the interface of user module(2)用户注册登陆模块的实现方式

56、a. 用户注册用户打开网站即进入用户登陆页而,如果用户没有注册那么注册调用useraction中的 register (),将注册信息封装到实体user的一个对象中,通过iuscrdao的register () 保存这个对象,持久化到数据库中。b. 用户登陆用户成功注册后输入正确的用户名和密码就可以登陆系统,调用useraction中的 logino方法,将登陆的用户名和密码传递给il'serda0屮logino ,判断用户是否存在, 如果用户存在并且密码止确那就向session中写入user这个实例,跳转到邮箱主页, 如果用户不存在或密码不正确提示用户,让用户重新输入。c. 用户退出

57、调用useraction中的logout ()方法,从session中删除当前用户实例,返回到用户登 陆页而。d. 找回密码当用户忘记密码的时候点击找回密码调用useraction中的findpassword()将你的用户 名传递进去,然后调用iuserdao【卩的finduser (string username)查询数据库这个用户 是否存在,如果存在查询岀密码保护问题和答案,将密码保护问题显示给用户,让用户 输入答案,如果用户的答案和数据库中的答案一致那么调用iuserdao中的 findpassword ()方法更新用户密码。e. 修改密码用户登陆成功后可以修改用户密码,调用useraction屮的updatepasswordlnput转向 到更新密码页面,更新密码调用useraction中的updatepassword()。4.2.2站内接收邮件模块(1)站内接收邮件模块详细设计站内新邮件、收件箱、垃圾箱、已删除实体类receive,如下图所示receive id ; integer name ; string fromname : string title ; string message : stri

温馨提示

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

评论

0/150

提交评论