seo整站怎么优化,做直播网站前端,网站瀑布流怎么做,网站式的公司记录怎么做题目: 基于web的邮件收发系统设计与实现
摘 要 计算机的应用已经越来越广泛#xff0c;它从产生到完善已经差不多有50年左右的历史#xff0c;更新换代速度非常快#xff0c;在人们生活、工作中都发挥了不可替代的作用#xff0c;几乎所有行业都离不开它#xff0c;已经成…题目: 基于web的邮件收发系统设计与实现
摘 要 计算机的应用已经越来越广泛它从产生到完善已经差不多有50年左右的历史更新换代速度非常快在人们生活、工作中都发挥了不可替代的作用几乎所有行业都离不开它已经成为了人们工作中不能缺少的一部分。此次程序采纳JSP动态技术通过MyEclipse开发工具代码方面运用了JavaSE的若干工具包引用了SUN公司开发的开源的JavaMail包作为系统开发的技术基础。采用了SMTP协议与POP3协议连接对应服务器。采用MySql数据库对数据存取管理。通过B/S模式研究研制这一系统。在对SMTP、pop3协议的熟悉和理解在运用ssh框架对系统进行开发。开发出基于C/S结构下的简易邮件系统能完成邮件的发送、接收、以及附件处理功能等。 本系统在互联网的环境中进行测试。系统能成功实现登录邮箱、发送邮件、接收邮件、管理邮件等功能测试完全通过基本功能已经实现 关键词POP3协议SMTP协议电子邮件 Abstract With the gradual popularity of the network, the application of Email in people’s lives is becoming more and more extensive. In addition to the professional mail service system, the general large websites and units provide email services. Therefore, through the familiarity and understanding of SMTP,pop3 protocol, as well as the mastery of JSP programming and web design skills, a simple mail service system based on C / S structure is developed. It can complete the mail sending, receiving, as well as attachment processing functions etc. The main software used is Eclipse, MySql. In JAVA environment, using JSP programming to realize mail. The various functions of the system mainly supports the authentication of users, and users can enter the system only after correct registration. You can check your own mail in the system or send it to any mailbox, and you can send attachments when you send it. Through the study and research of this subject, I have mastered the basic web programming skills, and practice my practical ability. At the same time, it is recognized that with the rapid development of information technology, the efficient, fast and convenient mail system will be paid more and more attention and used by more and more people, and it will bring more convenient and faster life to people. Key words: POP3SMTPThe E-mail
目 录
完成时间 2019年05月20日 II 摘 要 III Abstract IV 目 录 V 第1章 绪 论 1 1.1 课题背景 1 1.2 国内外的发展趋势与现状 1 第2章 系统分析 3 2.1系统需求分析 3 2.2系统的可行性分析 3 2.3.相关协议及开发工具 4 2.3.1 SMTP协议 4 2.3.2 POP3协议 4 2.3.3 JSP技术简介 5 2.3.4 Eclipse简介 5 2.3.5 JAVA开发语言 5 第3章 系统设计 7 3.1系统模块的功能图 7 3.2实体之间的关系E-R图 8 3.3数据库结构设计 8 3.3.1系统信息配置表 9 3.3.2用户表 9 3.3.3邮件信息记录表 10 第4章 系统详细设计与实现 11 4.1系统流程说明 11 4.2 用户管理模块 12 4.3 邮件发送模块 16 4.4 邮件接收模块 19 第5章 系统测试与评价 23 5.1测试用例编写规则 23 5.2测试用例 23 表5.1功能测试用例 23 5.3部分测试结果演示 24 5.3.1用户登录测试 24 5.3.2邮件撰写功能测试 25 结 论 27 参考文献 28 致 谢 29
第1章 绪 论
1.1 课题背景 我国已经逐步迈入5G时代其中信息产业的飞速发展是最大的推动力软件作为现代数据信息的重要支撑形式发挥着越来越重要的作用。并且在当今社会随着我国改革开放的深入市场经济飞速发展人们对于信息技术信息交流的使用也是越来越频繁传统的纸质信的方式已经不现实最近新兴发展起来的QQ、微信、MSN等实时性太强并不是所有人都一直有时间守着手机或者电脑来等候消息而过一段时间没看一些重要的消息有可能会被覆盖掉所以对于一些重要的信息或者说一些大公司之间的交流还是会以电子邮件为主比如现在最流行的招聘就是透过电子邮件发送简历公司通过电子邮件发送面试通知和offer等。电子邮件通常也被称之为E-mail通常传输的时候主要的标志符是。电子邮件市值也是将传统的纸质性质的信封给电子化了并且就电子邮件的成本来说价格非常低传输速度方面也非常快能够以最少的人力物力迅速的传遍世界的每一个有信号角落并且电子邮件能够传输各种加载有信息的载体包括文字、图片等信息。由于电子邮件的优良性能电子邮件已经在全世界范围得到了推广并且使用的企业人数都有了显著的提升[1]。 电子邮件的发现以及推广运用极大地方便了人们的日常生活。对于企业来说促进了企业的员工以及管理层之间的交流并且特有的OUTLOOK电子邮件保证了公司的秘密不被泄露出去。对于整体的社会经济效应而言电子邮件能够以最少的人力物力迅速的传遍世界的每一个有信号角落极大地促进了经济的发展。 1.2 国内外的发展趋势与现状 如今电子邮件在互联网上的作用不仅仅只是信息的交流从某种意义上来说它已经可以成为你在互联网上的身份证。在日常上网行为的使用上如果你没有一个电子邮件账号可以说是寸步难行因为由于互联网的发展电子邮件也已经发展的越来越稳定和安全。当你在各大运营网站在注册账号时填写电子邮件地址信息已经成为了与填写身份证号一样的必填信息之一。电子邮箱如今已经成为全世界最普遍的一种应用。在中国这个发展中国家网民大约占了人口的1/7人均使用邮箱量就有4.5个。电子邮件凭借着其独特不可取代的信息传递方式今后的发展只会越来越好越来越便利[2]。 1965年电子邮件诞生在美国麻省理工学院。在1971年被称为电子邮件之父的Ray Tomlinson开发了个专门用于计算机与计算机之间信息传递的系统。此系统用作为地址标识符通过ARPANET也就是当今互联网的前身发出了世界上第一封电子邮件。这个最原始最简易的计算机与计算机的信息交流方式成为世界上第一个互联网应用给互联网的蓬勃发展奠定了基础[3]。 在70年代电子邮件刚刚诞生电子邮件系统的协议没有一个统一的标准所以有许多基于互联网的Email传输的协议这些协议鱼龙混杂各有各的优势各有各的缺点但是过于复杂的传输协议是不利于电子邮件的开发与发展的。因此人们不满足于现状急切需要一个功能全面并且稳定安全容易学习又有利于开发者的利用的专门基于电子邮件的传输协议。不负众望在80年代RFC772文件中发布了电子邮件的传输协议。从此电子邮件系统统一了传输协议的唯一标准。通过人们的实践并且改进。世界上基于电子邮件传输唯一标准协议终于诞生了也就是SMTP协议。国内的电子邮件发展1987年有着“中国互联网第一人”之称的钱天百发出了中国的第一封电子邮件内容虽然简单但是意义重大内容为穿越长城走向世界。这也为中国国人走向世界奠定了基础。但是当时电子邮件还只是少数人的独木舟真正将电子邮件平民化的还是163.net也就是中国第一个电子邮局它是中国人设计的第一个免费的邮箱系统[9]。通过不断地发展在10年前的曾经Email这个网络词汇风靡全国。随着互联网在全国范围内的普及各个互联网公司都看中了电子邮件的发展潜力于是纷纷开始建立自己独有的电子邮箱服务器并且面对所有人免费开放。其中网易、腾讯、新浪等等公司脱颖而出成为中国如今的主流电子邮箱服务器供应商[4]。
第2章系统分析
2.1系统需求分析 在对一个系统进行开始开发时首先我们要对该系统的应用场景以及用户需求进行市场调研。只有在了解了用户需求和市场背景的情况下才能确保应用软件系统的可行性。对用户的需求和市场背景进行需求分析对系统的研发和以后的发展至关重要。搜集用户的需求从用户的需求中分析出软件的各个功能。总而来说就是将用户的需求转化为软件要实现的功能达到用户想要的效果。邮件系统主要是对邮件的管理通过对用户的管理将用户信息保存在系统中在系统中通过用户的邮箱号进行发送邮件。该系统适用于小型企业的内部信息通信。满足公司内部员工的工作事项交流。因此该系统在用户需求上和市场背景上都是可行的。 2.2系统的可行性分析 1技术可行性 科技不断向前发展计算机的功能越来越丰富已近逐步渗透到社会生活的各个角落对各个行业来说都是不可缺少的一个重要工具。它的功能之多作用之强大人们利用它进行文字处理、图形设计、信息储存、信息查询、图像处理、休闲放松等。在快步伐的今天人们利用计算机能够完成各种各样的难易程度不同的工作但是我们即便说计算机非常智能化各种不同的软件可以帮助我们实现多种不同形式的需求但是也有可能还不能解决一些人或者群体特别的需求因此相关领域的人或者群体就要去自己研制开发一些针对性极强的软件以此来完成自己的工作[11]。用当前稳定的框架可以提供系统的源代码这样在遇到问题时也可以在网上找到对应的资料参考而且在开发方面有许多资料可以给我们提供技术支持[5]。 2经济可行性 通过成本/效益分析法对计算机程序进行分析一般来讲在进行需求分析后对系统的开发成本进行评估再对系统进行系统设计和分析评估出系统的节省和利益将成本与利益相比较当成本小于利益事就认为该系统是可行的。除此之外如果有其他特殊要求或原因则认为该系统开发是不可行的。本系统的实现是为了考核学生的能力所以不存在经济可行性的问题。 3操作可行性该系统设计的各个功能十分清晰从用户的体验角度对各个功能进行划分图形界面化的操作符合当前人们的操作习惯在具备有计算机基本操作能力的人来说该系统在操作可行性上是可行的。 综上所述本系统的实现是可行的。 2.3.相关协议及开发工具 2.3.2 POP3协议 POP3协议的英文全称是Post Office Protocol version3 翻译过来就是邮局协议第3版。POP3采用的是C/S架构的通讯模型它一般被用来接受邮件。POP3的监听默认的端口号是110。在工作过程中有三种状态分别为认证状态处理状态与更新状态。状态的更新取决于其发送的请求或者是接受的响应。 POP3协议状态变更过程。当发送端用户通过SMTP协议与接受端已经成功建立连接的情况下它的状态是认证状态。一旦用户的身份被接受端确认之后认证状态立即回转变成处理状态。在用户的各种操作执行完毕时候用户发送端会发出QUIT请求立即回释放连接状态。保证不会占用过多内存资源。 POP3也是TCP/IP协议的一部分。与TCP/IP不同的是POP3只用在邮件的接受。作用非常单一但是极为常用。这也是邮件收发的安全与稳定奠定的基础。 2.3.3 JSP技术简介 JSP技术被广泛的运用在大小型网站建设上特别是新闻网站发布系统。之所以运用的这么广泛是因为JSP能通过标签写在HTML中运行在服务器之后可以通过代码的生成HTML。JSP(Java Server Page服务器网页) 是从90年开始出现的新技术。由Sun公司首倡、许多公司参与一起创建的一种动态网页技术标准[6]。它可以在程序运行状态下按照代码逻辑的将JSP解析为html,同时html运行在浏览器上将信息展示出来。通过JSP来实现各种不同的功能我们可以通过编写一定出具有一定逻辑代码在服务器上运行达到我们想要的效果[12]。 2.3.4 Eclipse简介 Eclipse是一个非常优秀的java开发IDE而且其免费开放源代码的特点深受广大开发写的喜好。Eclipse提供了一整套框架和服务功能非常强大编写和编译代码都非常方便适合初学者学习和上手。新闻网站系统依赖Tomcat7和JDK1.6等环境在eclipse中可以无缝的集成新闻网站所需的开发环境。同时eclipse还提供了安装插件的功能比如文件管理器、版本控制器、jar包管理器等功能的插件集成。对开发人员是不可多得的好事。而且eclipse还支持开发人员自己编写自己属于自己想要实现的功能插件这样也在促进eclipse自身功能的不断发展。eclipse还提供了丰富的开发快捷键如Alt/代码提示、Ctrl /注释或取消注释、Ctrl Shift O快速地导入类的路径、Ctrl Shift D在debug模式里显示变量值等等帮助开发人员快速的编写代码和定位开发中遇到的问题[7]。 随着Eclipse的不断发展运用的越来越广泛不仅支持面向对象的java编程语言开发而且还支持COBOL、PHP、Android等编程语言的开发。这也是eclipse倍受欢迎的原因。eclipse在框架的设计上就是一种开放的思想插件化的集成使得eclipse更加具有灵活性[13]。 2.3.5 JAVA开发语言 作为计算机编程语言的一种JAVA开发语言经过多年的实践检验深受系统开发人员的喜爱在最近几年的网络编程工作中被广泛使用。因为JAVA是集中了计算机编程语言、系统开发、应用、部署环境于一体的综合性软件开发技术且具备语言简单、健壮性、分布性、安全性、动态性、以及多线程等优点从系统开发角度来看可移植性好在网络环境下对系统性能的提升具有较好的保障方便程序员的整体开发工作[8]。 本文设计开发的电子邮件系统采用JAVA编程语言可以在确保系统安全性的基础上通过简单的编程简化开发人员的工作流程。另外通过继承机制实现子类对父类的有效继承从而提高代码的复用率节约开发时间和开发成本[9]。
第3章系统设计
3.1系统模块的功能图 该系统基于SMTP协议和POP3协议来发送和接收邮件所以该平台只是相当于一个代理邮件系统。该平台应该实现用户的登录验证只有拥有对该邮箱有合法权限的用户才能进行登录可以有多个用户同时对该邮箱(所代理的邮箱)进行控制[10]。而在发邮件系统中需要用户输入要送发邮件的对方邮箱名称可以进行邮件的发送。在收邮件系统中邮箱将自动将所有邮件包括其基本信息显示在收件箱中。 为了更清晰直观的描述系统各功能通过图3.1功能描述图将系统各功能展示出来。 此模块的功能图是从整个系统出发描绘出来的。其中介绍了管理员各个功能和基本用户的功能等等。用模块的功能图描绘整个系统使系统各个功能清晰可见层次分明是一种比较好的方法。 图3.13.2实体之间的关系E-R图 从剖析用户的方向来对基础数据进行构建的过程称为概念设计。它是一个过程从分析到结果从一个脑海中的想象到一个客观的实体的过程。之所以被广泛的应用是因为它是自上而上、从简到繁的演进。最终形成一套完整的系统。数据库和实体的关联我们通常使用E-R模型设计方法。通过ER模型的实体、属性和连接来形容一个数据库实体的内容。ER模型可以方便开发者理解整个系统功能。 下图为E-R模型建立的依据是由上面的需求分析所得。E-R模型如下图所示 实体之间的关系E-R图如下图3.2所示。 图3.2 实体之间的关系E-R图 3.3数据库结构设计 MySQL数据库是瑞典公司发布的,具体的MySQL数据库使用的是结构化的一种语言来进行操作的,进行查询进行管理,并且由于MySQL数据库所使用的源代码的复杂度较低,因此代码跑起来的速度非常快,并且由于其开源,所以MySQL数据库开发的成本也是非常低的,可以说MySQL数据库,不管是企业还是各种国家机构都非常喜欢的软件系统。因此本文选用的是MySQL数据库,进行数据的存储。 电子邮件系统在MVC框架下进行实现设计的系统网络拓扑图如下图3.3所示。由图3.3能够得出系统运行在服务器上用户操作客户端通过网络经过交换机与服务器进行通信。系统运用java语言开发在前端采用Ajax技术在所有的windows操作系统中都可以使用。 图3.3 系统网络拓扑图 3.3.1系统信息配置表 系统配置信息表如表3.4所示该表保存系统的相关信息配置相关信息如下图所示。对这些信息进行配置的目的就是为了更好的获取到用户的信息以便对系统进行管理。 表3.4 config 系统配置表 编号 字段 含义 类型 1 ForumName 系统名称 varchar 2 ForumURL 系统URL通信 varchar 3 CompanyName 公司名称 varchar 4 HostUrl 主页URL通信 varchar 5 SMTPServer 服务器 varchar 6 SystemEmail E-mail varchar 7 TimeAdjust 适应时间 varchar 8 ScriptTimeOut 有效时间 varchar 9 Logo logo varchar 10 Picurl 图片通信 varchar 11 Faceurl 头像通信 varchar 12 EmailFlag 邮件标志 number 14 IpFlag IP标志 number 15 FromFlag 来源 number 16 Maxtitlelist 最大主题列表数 varchar 3.3.2用户表 用户表t_user这个表有用户的最基本的信息具体信息如下表所示 表3.5 用户表 编号 字段 含义 类型 1 UserID 唯一编号 number 2 UserName 用户名 varchar 3 UserEmail E-mail通信 varchar 4 Article 个人签名 number 5 UserPassword 密码 varchar 7 Sex 性别 varchar 8 homepage 个人主页 varchar 9 addDate 注册时间 datetime 10 logins 登录次数 numeric 11 width 图像宽度 number 12 height 图像高度 number 13 Oicq Oicq号 varchar 14 lastlogin 最后登录时间 datetime 3.3.3邮件信息记录表 邮箱信息记录表t_email该表主要保存用户发送邮件的信息。如表3.6所示。 表3.6邮件信息记录表 编号 字段 含义 类型 1 id 唯一编号 number 2 serder 发件人 varchar 3 incept 接收人 varchar 4 title 标题 varchar 5 content 内容 varchar 6 flag 标识 number 7 sendtime 发送时间 varchar 8 delR 是否删除接受 number 9 delS 是否删除发送 number 10 isSend 发送标记 number
第4章 系统详细设计与实现
有系统设计可知本系统的设计共分为如下 用户模块用户可以对收发的邮件进行管理它包括 登录登录 撰写发送邮件发送邮件 收件箱管理查询所有已接收邮件列表邮件的查看。 草稿箱管理查询所有草稿邮件列表草稿箱的查看。 发件箱管理查询所有已发邮件列表查看已发送邮件发送邮件的删除。 以上是对整体设计的概述下面具体接受每个功能的具体设计介绍。 4.1系统流程说明 用户登陆时系统要求输入账号密码然后对账号密码匹配匹配失败则需要用户重新登陆输入正确的账号密码。当匹配成功后系统会进入收件箱获取收件箱邮件。用户可以查看收件箱列表中的邮件或者点击写信进行邮件发送。 图4 系统流程图 4.2 用户管理模块 该部分数据库方面只是涉及到一张Userinfo表。当用户进入登录页面后要求输入账号而且账号不能为空为了防止无效的信息提交系统会通过validator验证框架对表单进行非空验证。 根据表单中的action在struts-config.xml中找到的InfoAction对应的checkLogin方法在该方法中将表单中的账号和密码用参数接收再将参数传入数据处理层通过jdbc连接数据库用预编译对象执行SQL语句再用它的SET方法传送参数由于是一个查询语句有返回值用ResultSet对象接收进行读取如果存在也就是说存在用户名和密码都和用户输入信息相同而且在同一行则返回一个Boolean TRUE否则没找到就返回一个FALSE。返回False则跳转至错误页面。如果返回true用户登陆成功程序在后台会获取收件列表通过request返回一个邮件集合到前台展示。 图5 登入界面 主要代码 html:form action“/login.do” method“post”. 该代码是在对login.jsp提交上来的Action和ActionForm的查找做部署。名字为login,提交路径为path“/login”生存周期为会话该控制器的物理路径为type“com.action.LoginAction”forward 标签为当控制器处理完后返回一个Actionorward的对象该对象将在该标签内对应查找到对应的name属性后根据path跳转到对应的jsp.该action的name属性将找对应的ActionForm进行相应的表单填充。actionForm的配置代码如下 该ActionForm是一个动态的ActionForm,该类继承于 org.apache.struts.validator.DynaValidatorForm在form-property标签里面指定他的属性和类型。 在对表单的非空验证的时候用了Validator验证框架该框架的配置文件如下 对应的配置文件的实现如下代码 上面的代码是对表单的非空验证是对应的要验证的表单名字中property为指定要验证的表单控件名字depends为验证方法该方法在Validator验证框架中已经定义。可以查阅alidator-rules.xml配置文件。 为要输出信息的差数该差数可以在资源文件中定义。 public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response){ DynaActionForm ac(DynaActionForm)form; String sernull;} if(((String)ac.get(server)).equals(1)){ ser(String)ac.get(name)163.com;} else if(((String)ac.get(server)).equals(2)){ ser(String)ac.get(name)sina.com;} else if(((String)ac.get(server)).equals(3)){ ser(String)ac.get(name)yahoo.com;} CheckU cunew CheckU(); boolean tcu.check((String)ac.get(name),(String)ac.get(pass),ser); HttpSession sessionrequest.getSession(); session.setAttribute(server,ser); if(tfalse){ ActionErrors errors new ActionErrors(); errors.add(ActionErrors.GLOBAL_ERROR, newActionError(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 sqlselect * from Userinfo where uname(?) and pass(?) and server(?);} 查询的游标字符串。 boolean Tfalse; try{Class.forName(ul);} 建立驱动。 catch(ClassNotFoundException e){e.printStackTrace();} try{ Connection conDriverManager.getConnection(ur); 建立连接 try{PreparedStatement ptcon.prepareStatement(sql); 建立预编译对象。 try{ pt.setString(1,name); pt.setString(2,pass); pt.setString(3,server); 设置编译对象的差数。 ResultSet rspt.executeQuery(); 用结果集来存储返回记录。 while(rs.next()){Ttrue;}} 如果有该记录返回真。 finally{pt.close();}} finally{con.close();}} catch(SQLException q){q.printStackTrace();} return T; } 4.3 邮件发送模块 用户登陆后点击写信进入写信页面按照界面的提示输入相应的信息点击发送表单会将信息提交到InfoAction控制器的sendedMail方进行处理调用sendEmail方法进行邮件发送。通过调用java.util包下的PropertiesProperties对象是基于SMTP协议的类将邮件信息封装到MimeMessage类中来实现邮件在网络中的传输。邮件发送成功页面会跳转至发送成功页面。 图6 邮件发送页面 主要代码 public class sendText { public void send(String a,String b,String c,String e){ String path e; String sendmailc ; String tilte a; String content b; try {Properties prop new Properties(); prop.put(“mail.smtp.host”, “smtp.sohu.com”); 设置smtp主机 prop.put(“mail.smtp.auth”, “true”); 使用smtp身份验证 Session session Session.getDefaultInstance(prop, new Authenticator() { protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(“wen870105”,“wenshengyong”); } }); session.setDebug(true); MimeMessage mess new MimeMessage(session); mess.addRecipient(Message.RecipientType.TO, new InternetAddress( sendmail)); InternetAddress from new InternetAddress(“wen870105sohu.com”); // 发件人 mess.setFrom(from); mess.setSubject(tilte); mess.setSentDate(new Date()); Multipart multipart new MimeMultipart(); MimeBodyPart messageBodyPart new MimeBodyPart(); messageBodyPart.setText(content); multipart.addBodyPart(messageBodyPart);// 装载正文 定义一个MimeBodyPart对象用来装邮件的附件内容然后加入Multipart对象中. MimeBodyPart fileBodyPart new MimeBodyPart(); DataSource source new FileDataSource(path); fileBodyPart.setDataHandler(new DataHandler(source)); fileBodyPart.setFileName(source.getName()); multipart.addBodyPart(fileBodyPart); 装载附件 mess.setContent(multipart) 装载入Message中 mess.saveChanges(); 保存 Transport tra session.getTransport(“smtp”); 建立发送的对象 tra.connect(“smtp.sohu.com”, “wen870105”, “wenshengyong”); 连接方法1 tra.sendMessage(mess, mess.getAllRecipients()); // tra.send(mess);//该方法发送不用建立连接 tra.close();} catch (MessagingException ex) {ex.printStackTrace();}}} 该项目的Struts-config.xml的配置。 form-beanname“Re” type“org.apache.struts.action.DynaActionForm” 4.4 邮件接收模块 点击收件箱进入收件箱列表。在InfoAction控制器中调用selectGetsEmail方法先从session中获取用户信息中的邮箱账户密码通过pop3协议接收邮件。将接收到的邮件信息数组解析得到邮件的各个属性数据对每个属性信息进行处理。将邮件信息保存到一个邮件对象的list,再通过jdbc连接数据库将邮件信息保存最后再将邮件list通过request传到jsp页面进行展示。 收件箱如图7所示。 
图7 收件箱界面 主要代码 String mailHost “pop.sohu.com”; String userName “wen870105”; String pwd “wenshengyong”; ArrayList arrnew ArrayList();范型只能在1.5语法中 try 对读取所有邮件的方法的调用 {arrMail.receiveAllMail(mailHost, userName, pwd);} 保存邮件的信息存储在request中 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.getDefaultInstance§; 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 timenew SimpleDateFormat(“MM月dd”); for (int i 0, length message.length; i length; i) {MessageBean megInfo new MessageBean(); megInfo.setMailTime(time.format(message[i].getSentDate())); megInfo.setMailFrom(MimeUtility.decodeText(message[i].getFrom()[0].toString())); megInfo.setMailTopic(MimeUtility.decodeText(message[i].getSubject())); megInfo.setMailSize(message[i].getSize() “b”); 下面代码为在Action中调用查看其中一个邮件的内容的方法 String mailHost “pop.sohu.com”; String userName “wen870105”; String pwd “wenshengyong”; DynaActionForm ac(DynaActionForm)form; 得到超连接传的参数来判断具体是哪个邮件 String p(String)ac.get(“p”); int id Integer.parseInt§; try {try {request.setAttribute(“bean”, Mail.receiveOneMail(mailHost, userName, pwd, id));调用方法并把邮件的内容存储在request中。 下面代码为实现具体的收邮件的方法。 public static MessageBean receiveOneMail(String mailHost, String userName, String pwd,int id) throws MessagingException, IOException {Properties p new Properties(); Session session Session.getDefaultInstance§; Store store session.getStore(“pop3”); store.connect(mailHost, userName, pwd); Folder folder store.getFolder(“Inbox”); folder.open(Folder.READ_ONLY); Message message[] folder.getMessages(); MessageBean megInfo new MessageBean(); megInfo.setMailContent(message[id].getContent().toString()); return megInfo;
第5章 系统测试与评价
5.1测试用例编写规则 针对不同的功能我们必须设计测试用例。以用户管理功能测试组测试项目设计为例编写详细的测试用例同时对测试用例的编写要求如下 (1)功能覆盖 需要测试的功能都要包含在测试用例中。 (2)输入覆盖对同一功能进行测试当出现不同条件的情况下要对每一个条件进行单多测试。 (3)输出覆盖 为了编写出符合要求的测试案例针对输入条件不同的测试用例在测试中应对满足可能出现的正确结果进行覆盖。 5.2测试用例 测试相关的功能有登录功能、邮件发送功能、收件功能、已发邮件删除功能的一系列功能模块。 对上面的功能进行测试如果最后测试结果通过则最后一栏的测试结果表示为Ppass具体的测试案例见下面表5.1功能测试用例所示 表5.1功能测试用例 测试组 划分类别 测试项目 测试结果 用户管理功能测试组 管理 登录 通过 用户管理功能测试组 功能测试 邮件撰写功能 通过 用户管理功能测试组 功能测试 邮件读取功能 通过 用户管理功能测试组 功能测试 邮件删除功能 通过 从上面表5.1功能测试用例可以看出来对于注册功能、登录功能、邮件撰写功能、邮件读取功能、邮件删除功能的一系列功能模块的功能测试用例全部测试通过验证了系统平台的正确性。 通过测试用例的验证表明了设计的系统的正确性也说明了数据库管理系统的强大功能对于所需的各种用户的姓名、密码的一系列的信息按照相应的规则进行有顺序的排列存储起来这样可以方便以后的检索调用等的强大功能。 5.3部分测试结果演示 这里对于上文所提到的各种功能的测试进行了部分演示具体如下文所示 5.3.1用户登录测试 当直接进入系统以后会看到的界面如图5-2所示会提示我们输入具体的用户名 图 5-2
登陆成功进入邮件列表页面
图 5-3 如上图5-2 用户登录界面当直接进入系统以后会看到的界面会提示我们输入具体的用户名如果用户名输入错误则会之间连接关闭如果用户名正确会进一步跳出界面提示我们输入用户名密码然后会从数据库之中调取数据将二者匹配如果成功则会登录成功进入邮箱如果不匹配会关闭连接重新进入才能重新输入。我们也可以看到如果我们没有相应的账户在登录的下方有一个创建账户也就是本文所设计的功能。
5.3.2邮件撰写功能测试
图 5-4 发送邮件到qq邮箱
图 5-5 qq邮箱接收成功
图 5-6 当我们进入邮箱界面之后点击创建新邮件就可以实现邮件的撰写功能了具体情况如图5-4邮件的撰写功能测试所示 如上图5-4邮件的撰写功能测试所示我们可以进行文字的编写邮件撰写完毕之后我们可以选择相应的收件人进行发送当然也可以选择放弃并且可以注意到邮件撰写完毕。 其他的测试用例我们这里就不一一展示了但是从上面表5.1功能测试用例可以看出来对于注册功能、登录功能、邮件撰写功能、邮件读取功能、邮件删除功能的一系列功能模块的功能测试用例全部测试通过验证了系统平台的正确性。
结 论
经过上面的介绍。本系统的功能已经测试完毕测试结果正常 这个系统在设计时考虑到了后期的可扩展性问题在该系统的基础上后期可以对该系统进行拓展。另外此邮件系统可以作为某一系统的某一部分可以把此系统作为组件形式稍作修改添加到所要开发的系统中。 在本次的毕业设计中让本人学到很多知识软件应用方面学习了服务器Tomcat对以前有所接触的DreamWeaver也有了进一步的认识对其的掌握也更熟练。在网络通信方面深刻的认识了SMTP,pop3协议也对JAVAJAVA WEB有了一定的认识本系统在开发过程中的最大特色如下 1本设计的思路非常清楚在需求分析方面充分考虑到了各种需求以至于在后期设计方面可以顺利进行。 2在函数调用方面。充分考虑到了何种情况在用类DBConnect.java对数据库进行封装。 3本设计的操作流程完全符合用户的操作习惯规范化流程贯穿了整个设计过程。 4在对用户和管理员模块进行设计时做了分开处理看起来在物理上不存在联系行但是在逻辑上又是紧密联系的。 由于时间关系本设计在界面设计上没有进行细化界面不是很美观程序也可以进行适当的优化处理。今后会通过进一步的学习完善这些不足。通过本次毕业设计对开发项目积累了一定的经验在今后的系统开发中一定会弥补界面的不足以及对系统功能的优化方面加强。
参考文献
[1] Simon Robinson, K.Scott Allen等. C#高级编程[M]. 清华大学出版社. 2002. :175-177 [2] 罗军舟, 黎波涛, 杨明等. TCP/IP协议及网络编程技术[M]. 清华大学出版. 2004. :80-86 [3] 电脑编程技巧与维护杂志社. C#编程技巧典型案例解析[M]. 中国电力出版社. 2005. :100-103 [4] 云颠工作室. Visual C#中文版全面剖析[M]. 中国水利水电出版社. 2003.: 40-42 [5] Tim Parker . TCP/IP协议及网络编程技术[M]. 机械工业出版社. 2000.: 104-108 [6] 徐斐菲. 基于推送技术的移动电子邮件系统研究[D].西安电子科技大学, 2010.: 305-311 [7] 陶以政,吴志杰,唐定勇等. 基于Java消息服务的异步邮件发送技术[J]. 信息与电子工 程,2009,10(04):371-375. [8] 牛尧,章文毅. 基于JavaMail的邮件管理系统的设计[J]. 科学技术与工程,2008,12(15):4188-4193. [9] 周红静. 基于JaVaMail的Web邮件客户端的设计与实现[J]. 计算机系统应用,2008,14(06):88-91. [10] 屈培,刘莉,葛蓁. 基于JavaMail的电子邮件群发[J]. 电脑知识与技术,2007,14(17):1285-1286. [11] 钟忺,刘春燕. 基于JavaMail API的邮件认证与接收[J]. 计算机与数字工程,2007,18(06):88-100. [12] 杨淑萍,聂哲. 基于JavaMail的邮件客户端程序的设计与实现[J]. 电脑知识与技 术,2006,12(04):29-33. [13] 范莉莉. 基于Linux的Web邮件系统的设计[D].华中师范大学,2003. :103-106
致 谢
时间如白驹过隙几年大学时光也匆匆进入尾声在论文完成之际向指导老师致以崇高的敬意与由衷的感谢回顾从选择课题到系统制作到最后的系统调试与论文改写在这些过程中碰到了种种困难老师以他渊博的学识认真负责的教学态度精益求精的教学理念细心的纠错以及对我耐心的指导正是有老师如此的帮助我才能顺利的完成论文。同时也感谢与我一起度过欢快时光的同学们与老师们正是有你们我在大学才能快的生活以及获得丰富的专业知识与此同时再一次感谢指导老师感谢他为我们营造了浓厚的学习氛围无私的给予我们帮助同时不倦的指导我们。最后再次感谢在百忙之中抽空前来参与以及指导我们的老师领导教授。