毕业设计(论文)基于BS模式的某公司邮件系统的研发

上传人:仙*** 文档编号:33802686 上传时间:2021-10-19 格式:DOC 页数:19 大小:320.01KB
收藏 版权申诉 举报 下载
毕业设计(论文)基于BS模式的某公司邮件系统的研发_第1页
第1页 / 共19页
毕业设计(论文)基于BS模式的某公司邮件系统的研发_第2页
第2页 / 共19页
毕业设计(论文)基于BS模式的某公司邮件系统的研发_第3页
第3页 / 共19页
资源描述:

《毕业设计(论文)基于BS模式的某公司邮件系统的研发》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于BS模式的某公司邮件系统的研发(19页珍藏版)》请在装配图网上搜索。

1、某公司邮件系统的研发某公司邮件系统的研发摘摘 要要随着网络的逐渐普及,Email 在人们生活中应用日益广范,除了专业的邮件服务系统之外,一般大型网站与单位都提供了 email 服务。因此,本次设计是通过对 SMTP、pop3 协议的熟悉和理解、以及对 JSP 编程和网页设计技能的掌握,开发出一个简单的 B/S 结构下的邮件服务系统。能完成邮件的发送、接收、以及附件处理功能等。主要运用的软件有 Eclipse, SQL Server,在 JAVA 环境下,利用 JSP 编程来实现邮件系统的各种功能。该系统主要支持用户的身份验证,用户只有通过正确注册后才能进入该系统。在系统中可以查看自己的邮件也可

2、以发送邮件到任意的邮箱,发邮件的时候可以进行附件的发送。通过本次课题的学习和研究掌握了基本的 web 编程技能,更实践了自我的动手能力。同时认识到在信息化高速发展的今天,高效、快速、方便的邮件收发系统将得到越来越多的人关注和使用,它将给人们带来更方便快捷的生活。关键词关键词: : B/S;邮件系统;SMTP;POP3;JSP 591 论文网 www.591LW.comThe design and development of E-mail system based on B/SAbstractNowadays, with the increasing popularity of the net

3、work, Email system is used widely more and more. Since the e-mail comes to our life, people do not just depend on the traditional letters, either. Its reliable, fast, convenient and flexible, which makes people accept and use it widely. The graduation designment is a way to let us know how to develo

4、p an email system based on WEB. This system uses an agent mail which gets through SMTP and POP3 protocol to achieve the email system. It is similar to OUTLOOK which is based on WEB Service. The mainly used soft wares are Eclipse, SQL Server. Java is also used too, under which we can use JSP programm

5、ing to achieve for various functions. This system supports users authentication. Before accessing the system, users must have a proper registration. In this system, users can not only check their mail but also send them to any mail boxes. When sending the e-mail, they can also send the attachment. D

6、uring this period, not only can I deepen the understanding of professional knowledge, but also I practice my self-agility. At the same time, I realized that, with the rapid development of the informational technology, more and more people will be concerned with the efficient, fast and convenient mai

7、l system. After that, perhaps most of them will have a try. In a word, e-mail will make our life more efficient and convenient.Key words: B/S; mail system; SMTP; POP3; JSP 591 论文网 www.591LW.com目目 录录论文总页数:23 页1引言 .11.1课题背景 .11.2课题研究意义 .12相关技术和开发平台 .12.1开发环境的选择 .12.2JSP 技术.12.3系统所需协议介绍 .32.4系统所需配置简介 .

8、33系统需求分析与总体设计 .53.1系统设计目的 .53.2系统功能需求分析 .53.3系统总体构架 .63.4系统功能模块简介 .63.5数据库设计 .74系统详细设计及实现 .74.1系统流程说明 .74.2用户管理模块 .84.3邮件发送模块 .124.4邮件接收模块 .165测试及问题分析 .195.1用户登录模块测试 .195.2发邮件模块测试 .195.3测试结果分析 .19结 论 .21参考文献 .21第 1 页 共 23 页1 1 引言引言1.11.1 课题背景课题背景随着网络的逐渐普及现在的人们对于电子邮件已经不再陌生了,自从电子邮件进入人们的生活以来,人们对传统的信件已经

9、不再依赖,它的可靠、快速、方便、灵活、廉价、内容丰富等特点都在使我们更加喜欢和接受它。近年来,电子邮件飞速发展,可以看到在比较专业、服务比较全面周到的网站基本上都有免费电子邮件服务。他们大部分都是通过各种软件进行开发的。而在当今很流行的 Java 技术中就包含有 JavaMail API,它提供了大量的类和接口来与网络邮件传输。关于 Jsp,最近两年,Jsp 技术发展十分迅速,它的兴起让 IT 人员耳目一新,实现了长期以来的梦想。它的出现无疑是当今计算机技术通向计算时代的一个非常重要的里程碑。因此,本次毕业设计就是利用 Java 技术来实现简单的邮件发送和接收的功能。1.21.2 课题研究意义

10、课题研究意义对于用户来说一款简单,方便,快捷的邮件收发系统将会在很大程度上为用户提供满意的服务,制作一款能满足用户需求的邮件收发系统是每一个设计者所追求的目标。因此希望通过本次设计完成一个简单的邮件收发系统,实现邮件的接收与发送,并能完成附件的传输,同时能实现邮件用户登录管理及邮件删除等功能。从课题研究中更深入的了解邮件收发系统的设计原理,发现设计过程中的不足和知识的欠缺,为今后做出更好的设计打下一个坚实的基础。2 2相关技术和开发平台相关技术和开发平台2.12.1 开发环境的选择开发环境的选择整个系统开发完全采用 Browser/Server 模式,开发平台为 Java 平台,以Tomcat

11、 为 JSP 引擎和 Web 服务器,后台数据库使用 SQL Server 2000。在开发模式上选择 Browser/Server 模式,是因为 B/S 模式有以下优点:1开发成本及维护成本降低。由于 B/S 架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过 WWW 浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。2良好的安全性能,防火墙技术可以保证后台数据库的安全性。所有客户端请求都是通过 DBMS 来访问数据库,从而大大减少了数据直接暴

12、露的风险。因此系统的架构就采用了 B/S 设计模式。第 2 页 共 23 页2.22.2 JSP 技术技术1. JSP 简介JSP(JavaServer Pages)是由 Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准, 在传统的网页 HTML 文件(*.htm,*.html)中加入 Java 程序片段(Scriptlet)和 JSP 标记(tag),就构成了 JSP 网页(*.jsp)。Web 服务器在遇到访问 JSP 网页的请求时,首先执行其中的程序片段,然后将执行结果以 HTML 格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 ema

13、il 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无 Plugin,无 ActiveX,无 Java Applet,甚至无 Frame。在 Sun 正式发布 JSP(JavaServer Pages) 之后,这种新的 Web 应用开发技术很快引起了人们的关注。 JSP 为创建高度动态的 Web 应用提供了一个独特的开发环境。JSP 与 Microsoft 的 Active Server Pages 兼容,但是它是使用类似 HTML 的卷标以及 JAVA 程序代码段,而不是 VBScript。 2. SQ

14、L2000 简介在本次毕业设计中,应用到了数据库,在毕业设计中采用的是 SQL2000 数据库系统,所以在这个地方有必要对其进行简单的介绍。SQL 是一种数据库所用的标准语言,全名为 Structured Query Language。Microsoft SQL Server 是基于 SQL 的客户服务器数据库。它是一个高性能、多用户的关系型数据库,具有高容量的事务处理及决策支持功能,使用户能够用它建立大范围的分布式系统。 基本上,SQL Server 也是数据库的一种,与 Access 数据库一样,主要的功能就是用来存储数据,但相对于 Access 数据库来说,SQL Server 又多了一

15、些数据库应有的功能,整理如下:(1)安全性:在 SQL Server 中提供了账号管理的功能。对于数据库中所存储的数据,可通过账号与密码的管理,达到数据保密的目的。(2)集中性:在 Access 数据库中,一个文件就是一个数据库,不易集中管理,而 SQL Server 则是将所有的数据库都放在同一个 Server 中,方便用户管理。(3)记录性:在 SQL Server 中,有一个 Log 文件,是专门用来记录用户在数据库中所进行的改变。例如,新增了哪几条记录,删除哪几条记录,若将来发现执行错误,即可利用 Undo(恢复)将执行过的动作,恢复成未改变之前的数据存储状态。(4)备份性:对于 Ac

16、cess 数据库而言,所谓的备份就是将文件再复制一第 3 页 共 23 页份,而 SQL Server 中则设计有一套很完整的数据库备份系统,让用户可以既方便又容易地备份数据。(5)完整性:由于 SQL Server 中提供了很多数据库相关功能,算是一个更为完整的数据库系统。SQL Server 作为 Windows 数据库家族中出类拔萃的成员,其稳定性和安全性是无与伦比的,这也是网站建设至关重要的。随着 SQL Server2000 的推出,其易用性、可扩展性、稳定性等方面又有了明显增强。因此,我们选择 SQL Server 作为建立网站数据库的工具。2.32.3 系统所需协议介绍系统所需协

17、议介绍SMTP(简单邮件传输协议)负责邮件的发送和传输,使用 TCP25 端口,首先用户写好邮件之后发送给 SMTP 服务器,SMTP 将邮件转换为 ASCII 码并添加报头,发送出去,邮件在 INTERNET 中路由交换到达目的地的邮件服务器,对方的 SMTP将邮件的 ASCII 码解码。SMTP 协议是随着 Internet 的发展逐渐规范化和进一步完善的。SMTP 协议最早在 RFC821 中被定义,它提供了 Internet 上两个节点之间传送信息的一种方式。SMTP 协议非常的简单和直观,在 RFC821 中,SMTP 由一些通过 ASCII 码表示的命令字组成,通过这些命令字,两个

18、节点之间(客户机和服务器)可以建立 SMTP 连接,并进行信息传递。POP 协议(电子邮局协议)是一种允许用户从邮件服务器收发邮件的协议。它有两种版本,即 POP2 和 POP3,都具有简单的电子邮件存储转发功能。POP2与 POP3 本质上类似,都属于离线式工作协议,但是由于使用了不同的协议端口,两者并不兼容。与 SMTP 协议相结合,POP3 是目前最常用的电子邮件服务协议。 POP3 除了支持离线工作方式外,还支持在线工作方式。在离线工作方式下,用户收发邮件时,首先通过 POP3 客户程序登录到支持 POP3 协议的邮件服务器,然后发送邮件及附件;接着,邮件服务器将为该用户收存的邮件传送

19、给 POP3 客户程序,并将这些邮件从服务器上删除;最后,邮件服务器将用户提交的发送邮件,转发到运行 SMTP 协议的计算机中,通过它实现邮件的最终发送。在为用户从邮件服务器收取邮件时,POP3 是以该用户当前存储在服务器上全部邮件为对象进行操作的,并一次性将它们下载到用户端计算机中。一旦客户的邮件下载完毕,邮件服务器对这些邮件的暂存托管即告完成。使用 POP3,用户不能对他们贮存在邮件服务器上的邮件进行部分传输。离线工作方式适合那些从固定计算机上收发邮件的用户使用。当使用 POP3 在线工作方式收发邮件时,用户在所用的计算机与邮件服务第 4 页 共 23 页器保持连接的状态下读取邮件。用户的

20、邮件保留在邮件服务器上。2.42.4 系统所需配置简介系统所需配置简介1. TomcatTomcat 是一个免费的开源的 Serlvet 容器,它是 Apache 基金会的 Jakarta项目中的一个核心项目,由 Apache,Sun 和其它一些公司及个人共同开发而成。由于有了 Sun 的参与和支持,最新的 Servlet 和 Jsp 规范总能在 Tomcat 中得到体现。 在 Tomcat 中,应用程序的部署很简单,用户只需将自己的 WAR 放到Tomcat 的 webapp 目录下,Tomcat 会自动检测到这个文件,并将其解压。用户在浏览器中访问这个应用的 Jsp 时,通常第一次会很慢,

21、因为 Tomcat 要将 Jsp转化为 Servlet 文件,然后编译。编译以后,访问将会很快。另外 Tomcat 也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个 xml 文件中。通过这个应用,辅助于 Ftp,用户可以在远程通过 Web 部署和撤销应用。当然本地也可以。 基于 Tomcat 的开发其实主要是 Jsp 和 Servlet 的开发,开发 Jsp 和Servlet 非常简单,你可以用普通的文本编辑器或者 IDE,然后将其打包成 WAR即可。这里要提到另外一个工具 Ant,Ant 也是 Jakarta 中的一个子项目,它所实现的功能类似于 Uni

22、x 中的 make。只需要写一个 build.xml 文件,然后运行Ant 就可以完成 xml 文件中定义的工作,这个工具对于一个大的应用来说非常好,只需在 xml 中写很少的东西就可以将其编译并打包成 WAR。事实上,在很多应用服务器的发布中都包含了 Ant。另外,在 Jsp1.2 中,可以利用标签库实现 Java 代码与 Html 文件的分离,使 Jsp 的维护更方便。 Tomcat 在 JBuder 中不用配置,但是在用 Eclipce 中就需要配置:首先安装好 Tomcat,然后把 Tomcat 的包 apache-tomcat-5.5.15 在 MyEclipce 下进行配置就可以了

23、。配置好后绑定,启动。MyEclipce 下面进行介绍。2. Eclipse 和 MyEclipse 相比于大量的 JAVA 开发工具,不可否认 Borland 的 JBuider 和 Eclipse 是最可靠也是最普遍的。相比于 JBuider,Eclipse 小巧,速度上更是大大超越了JBuider,所以这次设计用的是 Eclipse。Eclipse 是一个开放源代码的、与 NetBeans、Sun ONE Studio 和 Borland JBuider 类似的一种基于 Java 的整合型可扩展开发平台,也是目前最著名的开源项目之一,就其本身而言,它只是一个框架和一组服务,用于通过插件组

24、件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT) 。其未来的目标不仅仅是成为专门开第 5 页 共 23 页发 Java 程序的 IDE 环境,根据 Eclipse 的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。Eclipse SDK(软件开发者包)是 Eclipse Platform、JDT 和 PDE 所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到 Eclipse Platform 中的工具。

25、Eclipse SDK 由 Eclipse 项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse 项目生产的软件以 CPL 发布,第三方组件有各自自身的许可协议。MyEclipse 企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对 Eclipse IDE 的扩展,利用它我们可以在数据库和 J2EE 的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的 J2EE 集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持 HTML, Struts, JSF, CSS, Javascript,

26、 SQL, Hibernate。在结构上,MyEclipse 的特征可以被分为 7 类:(1)J2EE 模型(2)WEB 开发工具(3)EJB 开发工具(4)应用程序服务器的连接器(5)J2EE 项目部署服务(6)数据库服务(7)MyEclipse 整合帮助对于以上每一种功能上的类别,在 Eclipse 中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse 结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。3 3系统需求分析与总体设计系统需求分析与总体设计3.13.1 系统设计目的系统设计目的本次毕业设计所要完成的,是一个 tomcat

27、服务器下的邮件收发平台,该平台功能类似于 OUTLOOK,但是由于时间的关系,只是实现了 OUTLOOK 的部分功能,但是该平台是基于 WEB 的一个 B/S 应用程序,它不用安装传统的 C/S 程序,只是需要在任意的客户端上访问该服务器就可以实现邮件收发功能。3.23.2 系统功能需求分析系统功能需求分析由于该 WEB 平台是通过 SMTP 协议来进行发送邮件,POP3 协议来接收邮件,所以该平台只是相当于一个代理邮件系统。该平台应该实现用户的登录验证,只有拥有对该邮箱有合法权限的用户才能进行登录,可以有多个用户同时对该第 6 页 共 23 页邮箱(所代理的邮箱)进行控制。而在发邮件系统中,

28、需要用户输入要送发邮件的对方邮箱名称,可以进行本地计算机资源传输,也就是添加附件的功能。在收邮件系统中,邮箱将自动将所有邮件包括其基本信息显示在收件箱中,并且将带附件的邮件的附件自动保存在本地计算机特定路径下。3.33.3 系统总体构架系统总体构架 系统总体模块框架如下图所示,用户在不同的模块通过相关操作完成对邮件的接收和发送并实现对邮件的管理。系统总体结构分为四个模块,关于每个模块的具体功能和实现将在后面进行介绍。图 1 设计系统结构图3.43.4 系统功能模块简介系统功能模块简介1.登录模块要求用户输入正确的用户名,密码。如果输入信息合法则登录成功进入邮件发送模块。如果输入信息某一项错误,

29、则显示该用户名不存在,登录失败。 图 2 登录流程图2.邮件发送模块用户发送邮件,需要输入收件人邮箱地址,邮件标题,正文。如果需要添加附件则点击“浏览”进行添加。如果输入的收件人邮箱地址错误或文本框至少有一项为空,则邮件发送失败,反之邮件发送成功,转到邮件发送成功界面。邮件收发系统用户登录模块接收邮件模块发送邮件模块邮件管理模块失败跳转到收件箱验证信息成功用户登录第 7 页 共 23 页 失败 图 3 发送邮件流程图3. 邮件接收模块通过邮件发送界面点击超连接进入邮件接收界面,系统将所有接收的邮件信息显示出来,包括发件人、主题、发送时间、邮件大小等。如果是带有附件的邮件,附件则自动保存到本地计

30、算机特定路径下。4.邮件管理模块在收邮件箱内点击你要读取的邮件即可进入该邮件了解其中的具体内容,进入某一封具体信件后将可以完整的看到该信件的具体内容,同样可以点击页面上的超连接进行回复或继续查看其他信件。3.53.5 数据库设计数据库设计本系统的数据库只涉及到了用户登录信息一张表格,主要用来检查用户是否有权限登录该邮箱。表 1 用户信息表名称字段名称数据类型主键非空用户名unameVarchar(50)noNo密码passVarchar(50)noNo代理服务器serverVarchar(50)noNo标识列idInt(4)yesNo4 4系统详细设计及实现系统详细设计及实现4.14.1 系系

31、统流程说明统流程说明4.24.2 用用户管理模块户管理模块该部分数据库方面只是涉及到一张Userinfo表,有3个字段,分别是标识列(主键):ID (int(4);用户名:username(varchar(50);密码:发送邮件发送成功页面发件处理程序第 8 页 共 23 页pass(varchar(50);用户邮箱:sever(varchar(50)。当用户进入登录页面后,要求输入用户名和密码,而且用户名不能为空,如果为空validator验证框架将会判断,而且阻止表单提交。表单提交后在配置文件Struts-config.xml中找到相应的Action,再通过该配置的name属性找到相应的A

32、ctionForm,对它进行表单值的填充,然后进入真正的控制器处理程序LoginAction的execute方法,在该方法中将用户名,密码作为参数传入读取数据库的数据处理层中,由JTDS建立驱动,连接,构建SQL语句,用预编译对象执行SQL语句,再用它的SET方法传送参数,由于是一个查询语句有返回值,用ResultSet对象接收,进行读取,如果存在,也就是说存在用户名和密码都和用户输入信息相同,而且在同一行,则返回一个Boolean TRUE,否则没找到就返回一个FALSE。如果返回的值为false,则返回一个mapping对象,该对象在配置文件中找到相应的跳转路径(该处理返回一个错误页面)。

33、如果返回true,那么程序继续运行,因为程序的设计要求是验证成功后进入的是读取全部邮件的一个列表,所以在下面的程序中要对邮件进行读取,并返回所有的信息。如果返回true后,进入真正的邮件接收处理程序,在得到所有邮件的信息后把它们用ArrayList集合进行保存,并通过request请求将结果集返回。图5 用户登录框当用户登录信息为空时所显示的页面如图6所示。 图6 非法用户登录页面当用户登录名不存在时所显示的页面如图7所示。第 9 页 共 23 页 图7 用户名不存在时显示的页面主要代码:html:form action=/login.do method=post该代码是在Login.jsp中

34、实现由用户提交表单后提交到的控制器位置。提交方法为post. 而在Struts框架中的关键是对核心配置文件Struts-Config.xml的配置, 该配置决定了整个应用程序的程序控制。该代码是在对Login.jsp提交上来的Action和ActionForm的查找做部署。名字为login,提交路径为path=/login,生存周期为会话,该控制器的物理路径为type=com.action.LoginAction,forward 标签为当控制器处理完后返回一个Actionorward的对象,该对象将在该标签内对应,查找到对应的name属性后,根据path跳转到对应的jsp.该action的na

35、me属性将找对应的ActionForm进行相应的表单填充。actionForm的配置代码如下 该 ActionForm 是一个动态的 ActionForm,该类继承于org.apache.struts.validator.DynaValidatorForm,在form-property 标签里面指定他的属性和类型。在对表单的非空验证的时候用了 Validator 验证框架,该框架的配置文件如下: 第 10 页 共 23 页 对应的配置文件的实现如下代码: 上面的代码是对表单的非空验证,是对应的要验证的表单名字,中property为指定要验证的表单控件名字,depends为验证方法,该方法在Va

36、lidator验证框架中已经定义。可以查阅alidator-rules.xml配置文件。 为要输出信息的差数,该差数可以在资源文件中定义。public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) DynaActionForm ac=(DynaActionForm)form; String ser=null; if(String)ac.get(server).equals(1)ser=(String)ac.

37、get(name)+; else if(String)ac.get(server).equals(2)ser=(String)ac.get(name)+; else if(String)ac.get(server).equals(3)ser=(String)ac.get(name)+;上面代码是控制器实现对用户权限的合法性的判断。其中Action是Struts框架中的控制器,通过重写它的execute方法实现Struts控制器。DynaActionForm ac=(DynaActionForm)form为实例已经填充的ActionForm对象。通过用户在下拉列表中选择的邮箱来判断代理服务器的名

38、字。第 11 页 共 23 页对用户是否在数据库中存在的方法的调用CheckU cu=new CheckU();boolean t=cu.check(String)ac.get(name),(String)ac.get(pass),ser);HttpSession session=request.getSession();session.setAttribute(server,ser);if(t=false)ActionErrors errors = new ActionErrors();errors.add(ActionErrors.GLOBAL_ERROR, new ActionError

39、(index.error);this.saveErrors(request, errors);return mapping.findForward(return);如果数据库中该用户名字存在则返回一个TRUE,通过判断来选择是跳转到哪个页面。return mapping.findForward(return)就是返回一个在Struts-config.xml中存在的forward对象。public boolean check(String name,String pass,String server)String sql=select * from Userinfo where uname=(?

40、) and pass=(?) and server=(?);查询的游标字符串。boolean T=false;tryClass.forName(ul);建立驱动。catch(ClassNotFoundException e)e.printStackTrace();try Connection con=DriverManager.getConnection(ur);建立连接tryPreparedStatement pt=con.prepareStatement(sql); 建立预编译对象。try pt.setString(1,name); pt.setString(2,pass);pt.setS

41、tring(3,server);设置编译对象的差数。ResultSet rs=pt.executeQuery();用结果集来存储返回记录。while(rs.next()T=true;如果有该记录返回真。第 12 页 共 23 页finallypt.close();finallycon.close();catch(SQLException q)q.printStackTrace();return T;4.34.3 邮件发送邮件发送模块模块 4.44.4 邮件接收邮件接收模块模块点击超链接后进入 ResiveM 中,同样在该控制器中调用接收邮件的核心代码(Mail.java).在该方法中首先由自己

42、的代理邮箱用户名,密码和 POP3 协议建立连接,以只读方式打开并将信息保存在 Message 数组中循环得到各部分想得到的值,在得到的值中由于存在字符编码等问题,所以封装了一个类MailFetcher.java 用来得到各部分信息,并且进行处理。各部分在代码中都做了注解,通过调用方法可以得到,然后用 Hash Table 进行间值对的封装,再存放在回话中。由于要传到 JSP 中读取,通过会话可以实现,也可以通过request 的 getAttrntrt 方法。关键难点是在对有附件的处理的时候,要先通过判断,要判断内容为什么类型,然后把内容进行解析,String 的为正文,那么要传回来进行保存

43、,在JSP 中显示。如果为附件,则通过 IO 的形式在本地计算机上保存。邮件接收界面如图 9 所示。图 9 接收邮件界面主要代码:下面是在控制器中对邮件的读取的方法的调用 String mailHost = ; String userName = wen870105;String pwd = wenshengyong;ArrayList arr=new ArrayList();范型,只能在1.5语法中第 13 页 共 23 页 try对读取所有邮件的方法的调用 arr=Mail.receiveAllMail(mailHost, userName, pwd); 保存邮件的信息,存储在reques

44、t中 request.setAttribute(arr, arr); 返回一个ActionForward对象return mapping.findForward(recev); 查看所有邮件消息的具体实现方法public static ArrayList receiveAllMail(String mailHost, String userName, String pwd)throws MessagingException, IOException Properties p = new Properties();Session session = Session.getDefaultInsta

45、nce(p);Store store = session.getStore(pop3);store.connect(mailHost, userName, pwd);Folder folder = store.getFolder(Inbox);folder.open(Folder.READ_ONLY); Message message = folder.getMessages();ArrayList arrMeg = new ArrayList();/ 接收邮件的具体信息SimpleDateFormat time=new SimpleDateFormat(MM月dd); for (int i

46、= 0, length = message.length; i length; i+)MessageBean megInfo = new MessageBean();megInfo.setMailTime(time.format(messagei.getSentDate();megInfo.setMailFrom(MimeUtility.decodeText(messagei.getFrom()0.toString();megInfo.setMailTopic(MimeUtility.decodeText(messagei.getSubject();megInfo.setMailSize(me

47、ssagei.getSize() + b);/显示是否带有附件。Object out_content = messagei.getContent(); if (!(out_content instanceof Multipart)/不是复合邮件体,既是不带附件。 megInfo.setMailFile(无); 第 14 页 共 23 页 else megInfo.setMailFile(有); megInfo.setId(i);arrMeg.add(megInfo); / Close connection folder.close(false); store.close(); return a

48、rrMeg;下面代码为在Action中调用查看其中一个邮件的内容的方法 String mailHost = ;String userName = wen870105;String pwd = wenshengyong;DynaActionForm ac=(DynaActionForm)form;得到超连接传的参数来判断具体是哪个邮件String p=(String)ac.get(p);int id = Integer.parseInt(p);trytryrequest.setAttribute(bean, Mail.receiveOneMail(mailHost, userName, pwd,

49、 id);调用方法并把邮件的内容存储在request中。下面代码为实现具体的收邮件的方法。public static MessageBean receiveOneMail(String mailHost, String userName, String pwd,int id) throws MessagingException, IOExceptionProperties p = new Properties(); Session session = Session.getDefaultInstance(p);Store store = session.getStore(pop3);store

50、.connect(mailHost, userName, pwd);Folder folder = store.getFolder(Inbox);folder.open(Folder.READ_ONLY);Message message = folder.getMessages();MessageBean megInfo = new MessageBean();megInfo.setMailContent(messageid.getContent().toString();return megInfo; 第 15 页 共 23 页5 5测试及问题分析测试及问题分析5.15.1 用户登录模块测试

51、用户登录模块测试对该模块的测试主要是测试用户的登录情况,对各种异常信息进行测试。用户登录模块测试如表2所示。表 2 用户登录模块测试数据列表测试功能测试数据预期结果实际结果比较用户登录用户名:joy密码:123输入不合法用户不存在错误的密码,登录失败用户登录用户名:kingxie520密码:gs198410输入合法输入合法,登录成功输入的数据为正确密码,登录成功用户登录用户名、密码为空输入不合法非法信息,登录失败输入信息为空,登录失败5.25.2 发邮件模块测试发邮件模块测试 对该模块的测试主要是测试用户在发送邮件时可能出现的各种输入错误进行验证,测试邮件的发送成功情况。 发邮件模块测试结果如

52、表 3 所示。表 3 发件模块测试数据列表测试功能测试数据期望结果实际结果比较发邮件文本框至少有 1 项没写输入不合法空异常,出错空异常,出错发邮件文本框正确写输入合法输入合法,提交数据数据类型正确,操作成功发邮件代理服务器舍为 hostMail设置不合法异常不支持 SMTP 的不能用于服务器发邮件设置合法输入正确,提交数据数据类型正确,操作成功发邮件代理服务器用户名或密码不对不能登录不能获得发送邮件的权限(异常)发邮件K输入合法输入正确,提交数据,发送邮件数据类型正确,操作成功5.35.3 测试结果分析测试结果分析通过对系统的测试,发现了部分问题,对不足之处进行了修改,在系统中为了增加实用性

53、,对系统中对代理服务器进行了默认设置,虽然功能受到了限制,但是保证了安全性,要实现多人的代理,可以从数据库中读取,而不是用户自己输入。通过测试证明系统功能基本能按照预期要求得到实现。第 16 页 共 23 页结结 论论至此,经过不懈努力,邮件发送系统的预期效果基本达到,能正常的发送和接收邮件,同时完成了对附件的处理,实现了用户的登录,加强了系统的安全性。在本次的毕业设计中,让本人学到很多知识,软件应用方面学习了服务器Tomcat,对以前有所接触的 DreamWeaver 也有了进一步的认识,对其的掌握也更熟练。在网络通信方面,深刻的认识了 SMTP,pop3 协议,也对 JAVA,JAVA W

54、EB 有了一定的认识。邮件收发系统基本上是按照软件工程的生命周期学方法来实现的。因此,实际开发过程中都是一步一步的按照软件周期学方法实现,也就是从需求分析,然后是总体设计,详细设计,编码,测试。因为是第一次做这样的系统设计,所以此次开发过程就是不断的学习的过程。在实际的开发过程中,得到老师和同学们的大力帮助。经过对这个系统的开发,让本人更深刻的认识了软件工程学中的一些方法和思想,同时也对数据库的了解有了提高。通过自己实际动手做东西,提高了自己实际动手能力,学到了很多书本上学不到的知识。这一切都将对以后的学习和工作带来积极的影响,可以说是收获不小。参考文献参考文献1 方睿,刁仁宏,吴四九.网络数据库原理及应用M.成都:四川大学出版社,2006。2 冯燕奎,赵德奎.JSP 实用案例教程M.北京:清华大学出版社,2005。3 黄晓东.JAVA 课程设计案例精编M.北京:中国水利水电出版社,2004。4 Bruce Eckel美.JAVA 编程思想M.北京:机械工业出版社,2005。5 W.Richard Stevens美.TCP/IP 详解,卷 1:协议M.北京:机械工业出版社,2000。6 Steve, McConnell美.代码大全M.北京,电子工业出版社,2003。7 张海藩.软件工程导论M.北京:清华大学出版社,2003。

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