基于java的电子邮件收发系统的设计与实现毕业作品.docx
《基于java的电子邮件收发系统的设计与实现毕业作品.docx》由会员分享,可在线阅读,更多相关《基于java的电子邮件收发系统的设计与实现毕业作品.docx(30页珍藏版)》请在冰豆网上搜索。
![基于java的电子邮件收发系统的设计与实现毕业作品.docx](https://file1.bdocx.com/fileroot1/2022-11/27/ef4e08eb-d07f-4146-a6c3-ebe14d554042/ef4e08eb-d07f-4146-a6c3-ebe14d5540421.gif)
基于java的电子邮件收发系统的设计与实现毕业作品
毕-设
业-计
(二零届)
基于java的电子邮件收发系统的设计与实现
所在学院
专业班级计算机科学与技术
学生姓名学号
指导教师职称
完成日期年月
摘要:
电子邮件发展的初期,人们只能通过outlook、foxmail等客户端软件来完成邮件的收发。
随着移动办公的出现,人们发现普通的C/S模式结构的电子邮件系统已不能满足需要,基于B/S结构的电子邮件系统在遵循邮件协议的前提下,以其快捷、方便的优点吸引了大量的用户。
在这种模式下,用户只需要安装web浏览器这一最常用的软件,通过登陆到邮箱的网页,即可完成邮件的收发及其他功能。
关键词:
电子邮件;邮件协议;B/S
DesignandImplementationofEmailSystembasedonJava
Abstract:
Atthebeginningoftheemail’sdeveloping,peoplesendandreceiveemailsbyusingclientsoftware,suchasoutlook、foxmailandsoon。
Withtheappearanceofmobileoffice,peoplefindcommonemailsystemcould’tsatisfiedtheirrequirements,onthepremiseoffollowingthemailprotocols,theemailsystemwhichisbasedontheBrower/Serverstructureattractsmanyusersbyitsadvantagessuchasfastandconvenient.Inthiskindofstruct,usersonlyneedtoinstallbrower,averycommonsoftware,bylogininthewebpageofmailsystem,thenhecanfinishrecivingorsendingmailsandotherfunctions.
Keywords:
email;mailprotocol;brower/server
1绪论
1.1课题的研究背景
1.1.1电子邮件的历史背景[1]
电子邮件(E-mail)又称电子信箱、电子邮政,它是—种用现代网络技术提供信息交换的通信方式,不只局限于信件的传递,还可用来传递文件、声音及图片等不同类型的信息,是因特网上使用最普遍的一项服务。
通过连接全世界的Internet,实现各类信息的传送、接收、存储等处理,将邮件送到世界各地的各个角落,这种非交互式的通信方式,加速了信息的交流和数据的传送。
1.1.2邮件系统的工作原理
电子邮件是一种存储转发式的服务,这正是电子信箱系统的核心。
利用存储转发可以实现非实时通信,属异步通信方式。
即邮件发送者可以随时随地发送邮件,不需要接收者同时在场。
即使对方现在不在,仍可将邮件立刻送到对方的信箱内,存储在对方的电子邮箱中。
收信人可以在他认为方便的时候收取信件,不受时间、地点的限制。
在这里,“发送”邮件意味着将邮件放到收件人的信箱中,而“接收”邮件则是收信人从自己的信箱中读取信件,信箱实际上是由文件管理系统支持的—个实体。
电子邮件是通过邮件服务器来完成发送和接收的,通常邮件服务器是安装有linux系统或者windows系统的计算机,它们提供24小时的电子邮件服务,用户只要向邮件服务器的管理人员申请—个信箱帐号,就可使用这项快速的邮件服务。
1.2课题的研究内容
随着网络的日益普及,互联网大大改变了人们的工作和生活方式,作为互联网上应用最为广泛的服务之一,电子邮件系统给予了人们别样的感受。
本系统使用Java语言来设计电子邮件系统,将E-mail系统和web技术相结合,生成一种界面友好、操作方便、易扩充的邮件收发系统。
用户通过浏览器直接访问电子邮件系统,无须进行任何配置。
该系统开发完成后,主要实现以下功能:
1)用户注册
新用户根据自己的喜好申请一个邮箱名,在注册成功后将会自动获得100MB的邮箱空间。
2)发信和收信
用户既可以向单个收信人发送邮件,也可以向多个收信人同时发送邮件,实现邮件的群发功能。
邮件不仅可以包含文本内容,也可以包含图片、音频、视频等多媒体信息。
在邮件成功发送到收件人的邮箱后,系统将告知用户邮件已成功发送的信息。
若由于网络拥堵或者其它原因致使邮件不能发送到收件人的邮箱,系统将提示邮件发送失败,并将邮件的副本放入草稿箱,以备用户下次发送时使用。
3)即时保存
在用户编写邮件的过程中,可能会遇到计算机断电、浏览器窗口意外关闭等突发状况。
为了使这些状况对于用户的损失降到最低程度,系统将对用户的页面数据每隔三十秒进行自动保存。
在发生上述突发状况后,用户可以到草稿箱中寻找最近一次保存的文档,并再次进行编辑。
4)联系人的编辑与查找
用户可以对联系人的信息进行编辑并分类。
在联系人过多时,可以使用查找功能快速方便的找到所需要的用户。
5)界面自定义功能
用户可以根据自己的喜好选择一款适合自己的邮箱界面,并且可以随时更换。
6)邮箱扩容
当用户认为邮箱的大小不足以满足自己的需要时,可以向系统管理员申请扩容。
1.3论文的内容组织
论文共由七章组成。
第1章绪论,主要介绍系统的研究背景、研究目的和意义、研究内容以及研究方法;第2章基础知识简介,主要介绍系统开发过程中会用到的相关技术,主要有系统的开发平台J2EE,邮件服务器的介绍包括用于发信的smtp服务器sendmail和用于收信的POP3服务器dovecot,还介绍了相关的数据库技术;第3章系统分析,对系统总体功能进行阐述,说明系统要实现的各个基本功能模块,并对系统的可行性进行分析;第4章概要设计,介绍系统的总体框架及相关数据结构;第5章系统设计与实现,主要介绍系统的硬、软件环境、界面设计、功能实现、主要技术难点;第6章系统测试与评价,主要涉及系统的测试方法、数据,结论以及对系统的性能进行评价;第7章总结与展望,主要阐述了本系统所完成的研究工作和存在的不足,以及希望在今后可以完善的地方。
2基础知识简介
2.1HTML简介
HTML(HyperTextMarkupLanguage)是一种超文本标记语言,这种语言是由很多HTML标签组成的,用最简单的记事本工具即可编写HTML网页。
而以HTML编写的这种超文本文档就称为HTML文档。
HTML是互联网上各种浏览器所识别的语言,这种语言所编写的文档一般以html或htm为扩展名。
HTML采用超集方式进行版本升级,因此更加灵活方便。
此外,可扩展性也是HTML的一大特点,HTML采取子类元素的方式,为系统扩展带来保证。
HTML具有平台无关性,即不仅可以在台式计算机上上网,而且可以在掌上电脑、手机等终端上上网,这更加证明了HTML是无处不在的。
HTML的主要结构可划分为3个部分:
1)HTML标签:
代表整篇文档是一个网页文件。
2)HEAD标签:
用于描述网页的头部信息。
3)BODY标签:
用于描述要显示的内容信息。
2.2JSP
JSP(javaServerPages)是服务器端的脚本语言,以Java和Servlet为基础,是一种通过在HTML页面中加入Java语言生成动态页面的技术[2]。
JSP页面由HTML代码和嵌入其中的Java代码所组成,服务器在页面被客户端所请求后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
JSP的执行过程是:
客户端请求JSP页面——>JSPParser解析*.jsp,编译为*.java——>javac命令编译成*.class——>执行class文件——>响应返回结果给客户端。
JSP代码中包含JSP和Templatedata两类元素。
Templatedata是JSP引擎不处理的部分,即JSP引擎会把标记在<%...%>以外的部分直接传递出去而不进行任何处理。
JSP在第一次被访问或修改后都会调用JSPParser将*.jsp文件编译成servlet程序,所以速度比较慢。
JSP有如下优点:
1)代码的执行效率高,即一次编译,多次、多处运行。
当JSP第一次被请求时,JSP页面转换成servlet,然后被编译成.calss文件,在这以后,除非页面有改动或Web服务器被重新启动,否则当再有客户请求该JSP页面时,JSP页面不被重新编译,而是直接执行已编译好的.class文件,因此代码执行效率高。
2)组件的重用性
可重用的、跨平台的JavaBeans和EJB(EnterpriseJavaBeans)组件,为JSP程序的开发提供方便,我们可以将复杂的处理程序(如页面中需要显示的动态内容及对数据库的操作)放到组件中。
3)内容的生成和显示分离
由于使用了JSP标识或者脚本来生成页面上的动态内容,因此,生成动态内容的语句一般被封装在JavaBean组件、EJB组件或JSP脚本段中。
这样,页面的设计人员和页面的编程人员可以同步进行。
同时在客户端通过查看源文件,看不到JSP标识的语句,更看不到JavaBean和EJB组件,也可以保护源程序的代码。
2.3Servlet
Servlet是作用于服务器端的java应用程序,它的主要功能是交互式地浏览和修改数据生成动态Web内容[3]。
其工作过程如下:
1)客户端发送请求至服务器端
2)服务器将请求信息送至servlet
3)Servlet生成相应内容并将其传给服务器
4)服务器将相应动态Web内容返回给客户端
2.4JavaMail
JavaMail是由Sun公司发布用来处理Email的API。
它可以方便地执行一些常用的邮件传输。
JavaMail中用于处理电子邮件的核心类是:
Session,Authenticator,Folder,Message,Address,Transport,Store等[4]。
Session类的主要作用是定义一个与邮件服务器的会话,其中的属性值,例如服务器地址、所采用的通信协议等均可在Properties类中设置。
Folder类是对服务器上的文件进行操作,例如打开文件的操作和以何种方式(只读、读写)打开文件。
Message类的作用是对邮件的内容进行操作,包括设置发送邮件和读取邮件的内容。
Tranport类的主要作用是发送邮件。
3服务器环境搭建
3.1java环境搭建
由于本系统采用java语言设计,所以需要在服务器端安装java的运行环境,从http:
//
图3-1:
更改jdk.bin文件的权限,使其成为可执行文件
安装好后还需配置环境变量,在linux环境中,通过编辑“/etc/profie”文件来设置环境变量的值。
在命令行中输入“vi/etc/profile”,将光标移到最后一行,按i键进入编辑模式,如图3-2所示,完成后按ESC键回到命令模式,保存退出。
图3-2:
配置java环境变量
此时环境变量的值还未得到应用,应执行图3-3命令将刚设置的参数添加到环境变量中。
图3-3:
使配置的环境变量生效
完成后执行“java–version”命令,若出现如图3-5所示页面,则表明java环境搭建成功。
图3-4:
java的运行环境搭建成功
3.2apache服务器
3.2.1Apache简介
Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。
Apache取自“apatchyserver”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、增加新的特性、修改原来的缺陷。
Apache的特点是简单、速度快、性能稳定,并且可以作为代理服务器来使用。
原来它只用于小型或试验Internet网络,后来逐步扩展到各种Unix系统中,尤其对Linux的支持相当完美[5]。
Apache有多种产品,可以支持SSL技术,也可以支持多个虚拟主机。
Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。
到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。
世界上很多著名的网站如A、Yahoo!
、W3Consortium、FinancialTimes等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
3.2.2Apache的安装与调试
从apache的官方网站http:
//httpd.apache.org/download.cgi#apache20上下载httpd-2.0.64.tar.gz,然后在本地用“tar-zxvfhttpd-2.0.64.tar.gz”命令将该文件解压缩。
进入解压后的目录后,执行命令“./configure--prefix=/usr/local--enable-so”配置apache的安装环境,其中“—prefix=/usr/local”的作用是将其安装到/usr/local目录下以方便管理。
然后执行make命令将该二进制源码进行编译,这一步需要较长的时间。
若无错误则执行“makeinstall”以安装apache软件。
安装完成后开始编辑apache的配置文件。
该配置文件的路径为/usr/local/apache2/conf/httpd.conf,打开后修改apache的监听ip及端口,如图3-5所示。
同时设置网站的根目录,如图3-6所示,将网站文件存放于该目录下。
找到DirectoryIndex这一参数,该参数的作用是设置在网站根目录寻找首页的顺序,该参数的配置如图3-7所示。
图3-5:
修改apache服务的监听ip
图3-6:
设置网站的根目录
图3-7:
设置网站首页的搜索顺序
结合图3-6和3-7可知,网站的首页是/home/hwy/mail下的login.jsp文件,若无该文件,则将该目录下的index.html作为网站的首页,至此apache的初步配置完成,保存退出。
为了验证是否安装成功,我们可以执行“/usr/local/apache2/bin/httpd&”命令来启动apache服务,&符号的含义是将该服务放至后台运行,不占据前台资源。
然后在浏览器中输入173.212.209.114,若出现如图3-8所示页面,则表明apache已被成功安装。
图3-8:
apache安装完成后的画面
3.3tomcat服务器
3.3.1Tomcat简介
Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
它是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。
如果配置好tomcat服务器,则不仅可以处理HTML请求,还可以作为jsp和servlet的容器。
不过tomcat处理html请求的能力不如apache,所以需要将两者整合以发挥最大的效能,这将在下一节中详细介绍
3.3.2Tomcat的安装与调试
如果下载的tomcat为免安装版,则下载后只需执行tar命令,将文件解压缩到/usr/local目录下即可使用。
执行“/usr/local/tomcat/bin/startup.sh”命令,在浏览器中输入173.212.209.114:
8080,若出现如图3-9所示页面,则表示tomcat服务可以正常使用。
图3-9:
tomcat成功安装
3.4整合apache与tomcat
3.4.1为什么要将两者进行整合
由于Apache只能处理静态页面,缺乏对动态页面的支持,因此在实际应用环境下不能单独将apache服务器作为网站服务器。
Tomcat除了支持JavaServlet/JSP之外,也可以当做网站服务器使用,但是对于静态的html、图片文件等文件来说,tomcat的解析效率不如Apache。
应用tomcat的服务器如果网站的访问量较大,系统资源占用会明显升高。
因此,我们可以同时应用tomcat和apache服务。
由Apache负责静态资源处理,tomcat负责jsp和javaservlet等动态资源的处理,因此可以将服务器的效能发挥到最大。
具体的,我们可以利用tomcat-connectors这个软件来完成apache和tomcat这两个软件的整合。
3.4.2整合的步骤与测试
从apache的官方网站http:
//tomcat.apache.org/download-connectors.cgi上可以下载tomcat-connectors软件,这里使用的版本号为1.2.31。
解压该文件,通过阅读它的安装说明文件BUILD.TXT可知,安装该软件只需要经过如图3-10所示的4个步骤即可。
图3-10:
安装tomcat-connectors的四个步骤
按步骤安装完软件后,将native目录下apache-2.0文件夹中的mod_jk.so拷贝至apache安装目录下的modules文件夹中。
然后切换至apache安装目录的conf文件夹,在该文件夹下建立mod_jk.conf和workers.properties两个配置文件,编辑mod_jk.conf文件,如图3-11所示,编辑workers.properties文件,如图3-12所示。
图3-11:
mod_jk.conf配置文件的内容
图3-12:
worker.propertie文件的配置
在上面的配置结束后,还需要在apache的配置文件中增加关于加载mod_jk模块的语句。
打开apache的配置文件httpd.conf,在最后一行写入如图3-13所示内容。
图3-13:
令apache在启动时加载mod_jk模块
最后,编辑tomcat的配置文件server.xml,该文件所在路径为/usr/local/tomcat/conf/server.xml。
在该文件的host字段中间,加入如图3-14所示内容
图3-14:
server.xml中添加apache的主目录
至此,tomcat和apache整合的所有步骤已经完成,为了验证是否成功,开启apache和tomcat进程,然后在apache的主目录(/home/hwy/mail)中添加一个welcome.jsp文件,文件内容如图3-15所示。
然后在浏览器中输入173.212.209.114/welcome.jsp。
若出现如图3-16所示内容,说明整合成功。
图3-15:
welcome.jsp的内容
图3-16:
apache和tomcat整合成功的结果
3.5sendmail(SMTP服务器)
3.5.1Sendmail简介
sendmail是linux平台上最重要的邮件传输代理程序(MTAmailtransferagent)。
一般情况下,我们把电子邮件程序分解成用户代理,传输代理和投递代理。
用户代理(如:
outlookexpress、foxmail等)用来接受用户的指令,将用户的信件传送至信件传输代理。
而投递代理则从信件传输代理取得信件传送至最终用户的邮箱,如:
procmail。
3.5.2Sendmail服务器的安装与调试
按sendmail的安装说明文件搭建好服务器环境以后,我们还需要了解sendmail的几个主要的配置文件sendmail.mc,sendmail.cf,access.db,access,local-host-names。
其中sendmail.cf是sendmail的主配置文件,由于它的内容比较难以读懂,因此我们一般修改sendmail.mc这个配置文件,然后利用m4命令重新生成一个sendmail.cf文件。
access.db是sendmail的一个数据库文件,其中记录了可以利用该服务器进行邮件转发的ip地址的范围。
因为它是一个数据库文件,不能直接编辑,所以修改access这个文件。
由于sendmail.mc文件默认只开启了对127.0.0.1这个网卡回环接口的监听,因此我们需要将其修改为0.0.0.0,即对本机的所有网卡地址进行监听(如图3-17所示)。
图3-17:
sendmail监听的地址,默认为127.0.0.1
其次,我们需要开启smtp的认证功能,否则邮件不能发送,在配置文件中找到如图3-18所示内容,去掉其dnl注释(在sendmail.mc中是以dnl作为注释符号),保存退出。
打开access文件,添加0.0.0.0网段,如图3-19所示,即对所有使用该服务器的主机进行邮件的转发服务。
保存退出。
执行如图3-20的命令产生一个新的数据库文件,然后执行图3-21所示命令产生一个邮件服务器所能识别的配置文件。
至此,sendmail的基本配置完成。
图3-18:
开启smtp认证功能
图3-19:
使服务器转发所有ip发送的邮件
图3-20:
生成新的数据库文件
图3-21:
使用m4命令生成新的配置文件
执行servicesendmailstart命令来启动邮件服务,在客户端打开命令提示符,执行telnet25即使用文本界面登录到smtp服务器(25为smtp的端口号),若出现图3-22所示内容,则说明sendmail服务器已经可以使用。
图3-22:
sendmail服务正常启动
3.6dovecot(POP3服务器)
从dovecot的官方网站http:
//www.dovecot.org/list/dovecot-news/2011-March/000186.html上可下载到dovecot软件,这里的版本号为2.0.11。
按照dovecot的配置文件安装该软件并启动dovecot服务后,在客户端使用telnet工具连接服务器的110端口,始终会报告一个不能通过pam验证的错误,根据错误提示,还需安装一个pam验证的软件,并在安装dovecot的同时添加with-pam参数。
安装完成后,根据/usr/local/dovecot/etc/dovecot中的README中的内容(图3-23),将example-config下的配置文件拷贝至该目录。
还需要编辑dovecot.conf这个主配置文件,取消dovecot支持的协议一行的注释,如图3-24所示。
图3-23:
README的文件信息
图3-24:
设置dovecot使用的协议
图3-25:
设置邮件的投送位置
另外,还需要编辑conf.d目录下的10-mail.c