基于JavaMail的电子邮件系统的设计与实现.docx
- 文档编号:3519776
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:42
- 大小:918.11KB
基于JavaMail的电子邮件系统的设计与实现.docx
《基于JavaMail的电子邮件系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于JavaMail的电子邮件系统的设计与实现.docx(42页珍藏版)》请在冰豆网上搜索。
基于JavaMail的电子邮件系统的设计与实现
基于JavaMail的电子邮件系统的设计与实现
邮件系统的设计与实现
摘要
在过去的几十年里,人们主要通过书信与相隔较远的人相互交流情感与思想。
而当今世界人们更多的是使用电子邮件,与传统的书信相比,电子邮件具有使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻等优点。
本文设计并实现了一套邮件系统。
首先研究了与系统相关的技术,其次分析了系统功能、性能和数据的需求,设计了系统构架、系统功能和数据库,并实现了系统的主要功能。
本文的系统构架是基于浏览器/服务器的三层架构,使用Java和S2SH框架开发而成。
在数据存储上使用了免费、开源、跨平台的MySQL数据库,邮件服务器使用了免费、开源的支持SMAP协议发送电子邮件和IMAP协议接收电子邮件的ApacheJames邮件服务器。
通过系统设计的用户注册和登陆、用户信息管理、邮件管理等模块,对邮件系统进行实现。
本系统具有功能丰富、结构清晰、运行效率高、数据访问效率高等优异性能,后期易于维护,可扩展性行比较好。
本系统还存在以下几个方面的工作尚需完善,即增加联系人管理模块,增强系统的稳定性,增强系统的安全性。
关键词:
电子邮件,James邮件服务器,MySQL,Java,S2SH
MailSystemDesignandImplementation
Abstract
Inthepastfewdecades,peoplemainlyexchangeideaswitheachotherbyletters. Buttodaypeoplearecommunicatingwitheachotherviae-mail,comparedwiththeletter,e-mailcorrespondencewitheasytouse,fastdelivery,low-cost,easytostore,theworld'ssmoothandsoon.
Thisarticlehasdesignedandimplementedamailsystem.First,studytechnologiesrelatedtothesystem.Then,analysesthesystemfunctions,performanceandthedatarequirements,andalsodesignthesystemarchitecture,systemfunctionsanddatabase,andfinallythemainfunctionsofthesystemcomeintoshap.Thesystemarchitectureisdevelopedbasingonathree-tierbrowser/serverarchitecture,usingJavaandS2SHframework.TheDatastoragetakeuseoffree,open-source,cross-platformMySQLdatabase.Themailserverusethefree,open-sourceApacheJamesmailserverthatsupportsSMAPprotocoltosende-mailsandtheIMAPprotocoltoreceivee-mails.DeveloptheE-mailsystembydifferentmoduleofthesystemdesign,includinguserregistrationandlogin,theuserinformationmanagement,mailmanagement.
Thissystemhasthefeature-rich,clearstructure,highefficiency,excellentperformanceofhighefficiencyofdataaccess,anditisnotonlyeasytomaintaininlatterstagesbutalsooutstandinginit`sscalablesexualactivity.
TherestillexistsproblemsthatneedfartherperfectioninThesystemfromfollowingaspects,likeincreasingthecontactmanagementmodule,enhancingthestabilityandsecurityofthesystem.
Keywords:
E-mail,Jamesmailserver,MySQL,Java,S2SH
1绪论
1.1课题研发背景
电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。
它是全球多种网络上使用最普遍的一项服务。
这种非交互式的通信,加速了信息的交流及数据传送。
通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。
到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。
与传统的信件相比,电子邮件更具有传统信件没有的优势,传统的邮件受到时间、地点等各种限制,而电子邮件却不受这些限制。
正是由于电子邮件的使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻,使得电子邮件被广泛地应用,它使人们的交流方式得到了极大的改变。
另外,电子邮件还可以进行一对多的邮件传递,同一邮件可以一次发送给许多人。
最重要的是,电子邮件是整个网络间以至所有其他网络系统中直接面向人与人之间信息交流的系统,它的数据发送方和接收方都是人,所以极大地满足了大量存在的人与人之间的通信需求。
现在随着互联网和计算机的普及[1],电子邮件将会成为人们越来越受欢迎的交流方式。
1.2选题的意义
当今流行的邮件系统如LotusNotes和Exchange是非常强大的商业软件[2]。
但这些系统包含的协作功能和每客户端得许可证费用使它们的整体成本急剧上升。
而事实上,很多使用这些系统的公司仅仅需要其中的邮件服务器基本功能,因此对于这些企业来说花重金来购买这些邮件系统还不如花少量的钱去重新开发一款功能简单的邮件系统。
所以开发一款简单易用的,使用户容易上手的电子邮件系统是非常有必要的。
对于大型的企业来说开发一种简单易用的具有电子邮件基本功能的电子邮件系统,不仅能够提高企业的生产效率而且能够降低人与人之间的沟通成本,使企业能够更好的发展。
1.3发展现状
国内很多企事业单位都有自己的邮件服务系统,免费邮箱有163、新浪等。
用户对电子邮件安全性、可靠性及功能上的要求也在不断提高。
因此,电子邮件服务供应商必须提供更安全、更可靠、功能更丰富的服务才能发展业务、吸引用户,从众多竞争者中脱颖而出。
如何构建高效、稳定、安全、易用可扩展功能丰富的电子邮件系统是众多电信运营商、ISP(InternetServiceProvider)、ICP(InternetContentProvider)共同面临的问题。
邮件服务器供应商致力于以下几个方面提高邮件服务器。
1.增加多用户模板的功能,以满足不同用户对界面的不同喜好:
如提供多种邮件webmail页面风格,提供个性化模板和多风格信纸,用户可以定义邮箱系统界面等。
2.增加防病毒模块,以增加E-mail系统整体的安全性,利用邮件加密和邮件签名等方式进行邮件传送。
在服务器端使用防病毒模块。
将电子邮件系统向统一信息系统发展,加入最新资讯,多媒体等功能。
反垃圾邮件为用户提供发垃圾邮件的多种过滤器,充分保证用户收到最低限度的垃圾邮件骚扰。
1.4本文结构安排
为了使您在短时间内了解本论文,介绍论文内容如下:
第1章主要介绍:
论文的课题研发背景、选题的意义、发展现状及论文的结构安排。
第2章主要介绍:
本次设计采用的技术、开发工具等。
第3章主要介绍:
邮件系统实际业务流程、功能需求、性能需求、数据库需求以及系统设计的目标。
第4章主要介绍:
数据库的设计与实现。
第5章主要介绍:
系统核心功能模块设计及实现。
第6章主要介绍:
系统测试环境、功能测试、用户界面测试以及单元测试。
第7章主要介绍:
本次毕业设计的总结及展望。
2技术与工具介绍
本部分主要介绍开发系统所采用的一些技术以及开发工具,包括采用的J2EE框架技术Struts2、Spring、Hibernate、James邮件服务器等的简单介绍。
2.1框架简介
1.Struts2简介
Struts2:
Struts2是由WebWork和Struts1共同衍生出的一个JavaEE框架。
Struts2吸收了WebWork和Struts1的长处,也处理了二者的一些不足之处,相对于Struts1,Struts2去掉了ActionForm[3],降低了框架之间的耦合性,Struts2的Action只是普通的java类(pojo),给模块测试带来了极大的方便。
Struts2框架的处理流程如图2-1所示。
图2-1Struts2框架处理流程
通过上面对Struts2体系结构的了解,我们发现Struts2对Struts1进行了巨大的改进。
主要表现在如下几个方面[4]:
(1)Interceptor做一些拦截或初始的工作
当外部的httpservletrequest到来时初始到了servlet容器,传递给一个标准的过滤器链Otherfilters。
(2)调用FilterDispatecher会去查找相应的ActionMapper如果找到了相应的ActionMapper它会将控制权限交给ActionProxy,ActionProxy将会通过ConfigurationManager来查找配置struts.xml。
(3)通过ActionInvocation来负责命令模式的实现(包括调用一些拦截Intercepror框架在调用action之前)一旦action返回,会查找相应的Result,Result类型可以使jsp或者freeMark等。
(4)这些组件和ActionMapper一起返回给请求的url,响应的返回是通过在web.xml中配置的过滤器。
2.Spring简介
Spring框架技术实际上是RodJohnson在ExpertOne-on-OneJ2EEDesignandDevelopment一书中所阐述的设计思想的具体实现[5]。
Spring框架为J2EE平台的开发者提供的是一种“对象管理”技术,也就是为开发者解决包括对象的生命周期、对象之间的依赖关系建立、对象的缓存实现等方面问题的管理技术[6]。
Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。
框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。
Spring框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。
Spring的核心要点是:
支持不绑定到特定J2EE服务的可重用业务和数据访问对象。
毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。
3.Hibernate简介
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库[7]。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
2.2开发工具简介
1.MyEclipse
MyEclipse,是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合。
MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。
MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。
它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。
2.MySQL数据库
MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器[8]。
MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置的软件中去。
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。
在2008年1月16号被Sun公司收购。
而2009年,Sun又被Oracle收购。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。
这样就增加了速度并提高了灵活性。
MySQL的SQL“结构化查询语言”。
SQL是用于访问数据库的最常用标准化语言。
MySQL软件采用了GPL(GNU通用公共许可证)。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
4.James邮件服务器简介
JavaApache邮件服务器一般是指Apache组织开发的James[10],它是一个轻便的、安全的100%纯Java实现的邮件服务器。
不仅如此James还可以提供更多的功能,感谢James给我们提供了插件化协议架构和Mailet底层构造,它可以让我们利用Web服务器的servlets处理邮件。
Email服务到处都是,开始是DARPA(国防部高级研究计划局)的一个计划并最终发展为Internet,但是James成为了打破这一传统规则的第一个应用。
TheJavaApache企业邮件服务器(a.k.a.ApacheJames)是一个100%用Java实现的SMTP和POP3邮件服务器,同时,他还实现了NNTP新闻服务器的功能。
James被设计成一个完整的、可移植的企业邮件引擎解决方案,他完全基于目前可用的开放性协议。
James还是一个邮件应用平台。
Apache组织提供了一套JavaAPI-mailetAPI,利用MailetAPI,可以根据自己的需要用Java语言编写代码来对邮件进行个性化的处理。
Mailet可以生成一个自动回复,更新数据库,阻止垃圾邮件,建立消息档案,或者任何我们能想像的到的功能。
与Mailet密切相关的是消息适配器(Matcher),一个消息适配器可以判断Mailet是否要对服务器中的一个邮件进行处理。
James被设计为实现几个确定的目标。
比如它完全使用Java开发以便适应最大的轻便行;它提供了很多安全特性用于保护服务器的运行环境安全还提供了安全服务。
James是多线程的,它使用了很多Avalon架构提供的功能。
James提供了完善的服务,包括一个完全可以运行的Email服务器。
这些服务主要是有Macther和MailetAPI实现的,这两个API提供了Email检查和处理功能。
James支持标准的email协议(SMTP,POP3,IMAP),另外还提供了一些附加功能,它使用了松散耦合的插件设计方式使消息框架从协议中抽象出来。
这种设计方式非常有用,使我们可以把James当作一个通常的消息服务器或者为即时消息传输提供支持。
James一个更重要的设计目标是提出了Mailet概念,Mailet提供了一个开发邮件应用程序的完整生命周期。
当然你也可以在这里使用其他MTA(邮件传输代理),比如SendMail,要这样作的话我们需要提供一个可调用的程序然后将数据传送给它来完成工作,不过,James提供了一套更简单、通用的API来完成这些工作。
2.3电子邮件简介
电子邮件,它是—种用电子手段提供信息交换的通信方式。
它是全球多种网络上使用最普遍的一项服务。
这种非交互式的通信,加速了信息的交流及数据传送,它是—个简易、快速的方法。
通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。
邮件服务器按通讯协议可以划分为以下两种类型:
SMTP服务器:
用于替用户发送邮件和接收外面发送给本地用户的邮件,它相当于现实生活中邮件的邮件接收部门(可接收普通用户投递的邮件以及其它邮局投递过来的邮件)。
POP3/IMAP服务器:
用于帮助用户读取SMTP服务器接收进来的该用户的邮件。
当前常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。
下面分别对其进行简单介绍。
1.SMTP协议:
SMTP的全称是SimpleMailTransferProtocol,即简单邮件传输协议。
目标是向用户提供高效、可靠的邮件传输。
SMTP的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。
工作在两种情况下:
一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。
2.POP3协议:
POP的全称是PostOfficeProtocol,即邮局协议,用于电子邮件的接收,它使用TCP的110端口,现在常用的是第三版,所以简称为POP3。
POP邮局协议负责从邮件服务器中检索电子邮件。
它要求邮件服务器完成下面几种任务之一:
从邮件服务器中检索邮件并从服务器中删除这个邮件;从邮件服务器中检索邮件但不删除它;不检索邮件,只是询问是否有新邮件到达。
3.IMAP4协议:
IMAP的全称是InternetMessageAccessProtocol,顾名思义,主要提供的是通过Internet获取信息的一种协议。
IMAP像POP那样提供了方便的邮件下载服务,让用户能进行离线阅读,但IMAP能完成的却远远不只这些。
IMAP提供的摘要浏览功能可以让用户在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。
Internet上传送电子邮件是通过一套称为邮件服务器的程序进行硬件管理并储存的。
与个人计算机不同,这些邮件服务器及其程序必须每天24小时不停地运行,否则就不能收发邮件了,简单邮件传输协议SMTP(SimpleMailTransferProtocol)和邮局协议POP(PostOfficeProtocol)是负责用客户机/服务器模式发送和检索电子邮件的协议。
用户计算机上运行的电子邮件客户机程序请求邮件服务器进行邮件传输,邮件服务器采用简单邮件传输协议标准。
很多邮件传输工具,如outlookexpress、foxmail等,都遵守SMTP标准并用这个协议向邮件服务器发送邮件[12]。
SMTP协议规定了邮件信息的具体格式和邮件的管理方式。
电子邮件的工作原理如图2-4所示。
图2-4电子邮件工作原理
2.4小结
本章主要介绍了本系统开发中所用的一些技术,为系统的编写打下了坚实的基础。
然后介绍了开发系统的各种工具,为搭建好开发系统的环境做了准备。
3需求分析
用户需求分析是整个设计制作的起点,它是在用户需求调研的基础上,确定系统的总体结构方案,完成相应的需求分析报告。
在确定系统的总体结构方案过程中,需要确定应用程序的结构、系统开发环境、系统测试环境和运行环境以及系统的功能模块。
在用户需求调研结束之后,应立即进行用户需求分析。
需求分析的结果反映了用户的时间需求,它将影响到设计的合理性和实用性。
开发软件计划的提出与软件消亡之间的过程中我们称之为软件的生存周期。
软件生存周期是根据软件所处的状态、特征以及软件开发活动的目的、任务可以划分若干阶段,从这一思想出发,软件生存周期包括软件定义,软件开发、软件使用与维护三个部分,具体则可以得到软件生存周期的六个步骤,即制定计划、需求分析,软件设计、程序编码、测试及运行维护。
软件需求分析工作是软件生存期中具有决定性意义的一步,只有通过需求分析才能把软件的功能和性能的总体要领描述为具体的软件规程说明,从而奠定软件开发基础。
邮件系统在开发的过程也应严格遵循这一过程,进行详细的需求分析设计,从而设计出一个优秀的电子邮件系统软件[13]。
3.1实际业务操作流程
没有注册的用户可以通过注册页面进行注册,填写自己的个人信息后提交,然后登录,注册过的用户可以直接登录邮箱,进入邮箱主界面,然后对自己的个人信息进行修改、查询以及找回密码等操作,还可以对自己的邮件进行查看、删除、发送、搜索等操作。
3.2系统设计的目标
系统开发的总体任务是实现电子邮件系统开发的系统化、规范化和自动化,从而达到提高电子邮件系统开发的效率的目的和提高软件产品的质量[14]。
所谓的优秀软件,就是权衡了各种因素,从而使得系统在整个生命周期中的总开销最小的设计。
因此,优秀的软件设计的一个主要特点就是容易维护。
本系统作为典型的Web系统应该尽可能的准寻以下准则,以确保系统软件的质量。
1.模块化:
再设计系统的时候应当尽可能的将数据结构和操作这些数据的方法紧密地结合在一起,使得系统能够被分解成各个独立的模块。
2.可重用:
软件重用是提高软件开发生产率和目标系统质量的重要途径。
重用有两方面的含义:
一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统是创建的类),二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。
3.弱耦合:
耦合是指一个软件结构不同模块之间互连的紧密程度。
弱耦合是优秀设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。
在理想情况下,对某一部分的理解、测试或修改,无需涉及到其他部分。
4.强内聚:
内聚是衡量一个模块内各个元素彼此结合的紧密程度。
在设计时应该力求做到高内聚。
根据分析,本系统的设计目标是:
设置一个登录窗口供用户登录。
用户可以登录到程序主页面进行相关操作。
用户可以对所有个人信息进行修改、查询以及找回密码操作,以及对邮件信息的发送、接受、删除、查询以及移动等操作。
用户操作的所有数据都来自于一个用MySQL建立的数据库——“email”。
前台的应用程序与后台数据库使用JDBC技术连接起来进行相互操作。
用户对邮件信息的删除、移动以及个人信息的修改等操作的结果也都会写入该数据库保存起来。
3.3系统需求分析
软件系统的需求一般可以分为功能性需求和非功能性需求。
信息系统中数据需求也是至关重要的,是系统功能实现的基础。
功能性需求是系统需要实现的,提供给用户使用的具体的功能;非功能性需求是为了满足用户对系统功能的需求,系统正常工作所应当具备的系统的特定特性,如性能、安全性、可用性、可扩展性等等,二者互为影响。
对于本系统的需求分析,分别从功能需求、性能需求、数据库需求三个主要方面分别详述。
3.3.1功能需求分析
1.电子邮件系统主要功能是普通用户收发电子邮
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JavaMail 电子邮件 系统 设计 实现