基于Javamail的邮件收发系统论文.docx
《基于Javamail的邮件收发系统论文.docx》由会员分享,可在线阅读,更多相关《基于Javamail的邮件收发系统论文.docx(30页珍藏版)》请在冰豆网上搜索。
基于Javamail的邮件收发系统论文
基于JavaMail的邮件收发系统
摘要
电子邮件在当今社会中扮演了一个很重要的角色。
越来越多的人在使用它。
而且用它的人数势必会继续增加。
本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。
本系统利用SMTP协议和POP协议从底层进行开发,利用JavaMailAPI为收发邮件提供与协议无关的访问。
SMTP(简单邮件传输协议)是专门用来发送邮件的。
POP(邮局协议)是专门用于接收邮件的。
JavaMailAPI是一种可选的、能用于读取、编写和发送电子消息的标准扩展包。
本文主要可分为四个部分。
第一部分介绍了Javamail邮件系统的意义和现状。
第二部分具体介绍了几种相关协议和JavamailAPI。
第三部分主要介绍了系统的开发工具JAVA语言、Eclipse及其安装过程与配置方法。
第四部分详细阐述了Javamail邮件收发系统的实现过程。
关键词:
SMTP,POP,JAVAMAIL,邮件收发
MAILSYSTEMBASEDONJAVAMAIL
ABSTRACT
E-Mailplayaveryimportantroleinmoderntimes.Moreandmorepeopleareusingit,andthenumberofitwilllargerandlarger.Thispaperintroducedthejavamailsystem'sdevelopmentbackground,analyzedandcomparedsomeexistingmaturityEmailsystemathomeandabroad,summarizedtheiradvantagesanddisadvantages,studieddeeplywiththejavamailtechnology,proposedanddesignedoutthemailsystembasedonjavamail.ThissystemusedPOPprotocolandSMTPprotocoltodevelopfromthebottom,usedJavaMailAPItoprovidethevisitwhichhasnothingtodowiththeagreementforsendandreceiveemail.SMTP(SimpleMailTransferProtocol)isdesignedtosendamessage.POP(PostOfficeProtocol)isdesignedtoreceivemail.JavaMailAPIisanstandardexpansionpackagewhichisoptional,canbeusedtoread,writeandsendelectronicmessages.
Thispapercanbedividedintofourparts.Thefirstpartintroducedjavamailemailsystem'ssignificanceandstatus.ThesecondpartintroducedseveralrelatedagreementsandJavaMailAPI.Thethirdpartmainlyintroducedsystem'sdevelopmenttoolsJAVAlanguage,Eclipseandtheirinstallationprocessandconfigurationmethod.Thefourthpartdetailedjavamailemailsystem'srealizationprocess.
Keywords:
SMTP,POP,JAVAMAIL,Emailtosendandreceive
目录
第一章绪论1
1.1电子邮件介绍1
1.2研究意义1
1.3研究现状3
第二章相关邮件协议和JavaMailAPI5
2.1相关邮件协议5
2.2JavaMailAPI6
2.2.1JavaMailAPI简介6
2.2.2JavaMailAPI核心类6
2.3.3JavaMailAPI的应用8
第三章应用系统开发工具11
3.1Java开发语言简介11
3.2开发工具Eclipse12
3.3开发软件的安装12
3.3.1JAVA环境的安装与配置12
3.3.2Eclipse的安装15
3.3.3javamail的安装15
第四章JavaMail系统的实现16
4.1环境配置与界面搭建16
4.2设置邮件服务器参数的实现16
4.3创建与发送邮件功能的实现17
4.3.1装载邮件服务器属性,并与其建立连接17
4.3.2构建邮件18
4.3.3创建Transport对象发送邮件19
4.4接收邮件功能的实现19
4.4.1获取服务器信息20
4.4.2建立通信连接20
4.4.3显示邮件20
4.5删除邮件功能的实现22
第五章结语23
参考文献24
致谢25
第一章绪论
本文是一项基于JavaMail的邮件系统的综合性研究,使用Sun公司提供的JavaMailAPI实现电子邮件的发送、电子邮件的接收等等功能。
1.1电子邮件介绍
电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。
它是全球多种网络上使用最普遍的一项服务。
这种非交互式的通信,加速了信息的交流及数据传送,它是—个简易、快速的方法。
通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。
到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。
电子邮件不是一种“终端到终端”的服务,是被称为“存贮转发式”服务。
这正是电子信箱系统的核心,利用存贮转发可进行非实时通信,属异步通信方式[1]。
即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在,仍可将邮件立刻送到对方的信箱内,且存储在对方的电子邮箱中。
接收者可在他认为方便的时候读取信件,不受时空限制。
在这里,“发送”邮件意味着将邮件放到收件人的信箱中,而“接收”邮件则意味着从自己的信箱中读取信件,信箱实际上是由文件管理系统支持的—个实体。
因为电子邮件是通过邮件服务器(mai1server)来传递档的。
通常mailserver是执行多任务操作系统UNIX的计算机,它提供24小时的电子邮件服务,用户只要向mailserver管理人员申请—个信箱账号,就可使用这项快速的邮件服务。
电子邮件的工作原理:
1)电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。
电子邮件的传输是通过电子邮件简单传输协议(SimpleMailTransferProtocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。
2)电子邮件的基本原理,是在通信网上设立“电子信箱系统”,它实际上是一个计算机系统。
系统的硬件是一个高性能、大容量的计算机。
硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有属于自己的—个电子信箱。
并确定—个用户名和用户可以自己随意修改的口令。
存储空间包含存放所收信件、编辑信件以及信件存盘三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作,系统功能主要由软件实现。
3)电子邮件的通信是在信箱之间进行的。
用户首先开启自己的信箱,然后通过键入命令的方式将需要发送的邮件发到对方的信箱中。
邮件在信箱之间进行传递和交换,也可以与另—个邮件系统进行传递和交换。
收方在取信时,使用特定账号从信箱提取。
1.2研究意义
随着社会的发展,科技的进步,作为信息载体的计算机日益显露出其举足轻重的地位。
当今社
会已步入了信息社会,知识经济将成为新世纪的主导产业。
人们传统的联系方式也在不断的被改变。
伴随着Internet的发展,电子邮件以其使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻等等优点被广泛地应用,它使人们的交流方式得到了极大的改变。
电子邮件已是人们沟通、交流的重要工具。
由于E-mail是当今人们交流的重要工具之一,因而,对E-mail系统的研究也逐渐变的热起来。
基于JavaMail邮件系统具有快捷、方便的优点,吸引了众多的网络用户,使其成为E-mail研究方向的热点之一。
最初人们在使用E-mail服务时,必须使用邮件客服端,如:
Outlook、Foxmail等软件,去接收邮件服务器上的邮件。
由于操作系统的不同,往往需要不同的邮件接收客户端,给人们接收邮件带来很大的不便。
但是基于JavaMail的邮件系统只要一个网络浏览器就可以实现E-mail的日常收发功能,而网络浏览器是任何操作系统中都自带的软件,用户在世界任何一个角落任何一台计算机都可以进行E-mail的收发工作。
此外,由于最初用户接收邮件的设置信息均保存在客服端,当用户重新安装操作系统或者更换计算机还要重新设置,而基于JavaMail的邮件收发系统的设置保存在邮件服务器上,不论你更换电脑还是系统,收发邮件的方式都是按照以前的设置进行的,使邮件的收发更合你的口味。
基于JavaMail的邮件系统让你不在为机器配置担忧,而且还为用户的邮件安全分担忧愁。
由于最初需要使用客服端软件收发软件,硬件配置低的计算机就显得“爱莫能助”了。
虽然计算机的发展使得硬件问题不再是个问题,但是不强调硬件的配置也是基于JavaMail邮件系统的一个优点之一。
此外,由于客户端软件维护和升级困难,网络浏览器的更新速度要远远大于邮件客户端软件的更新速度,这就给用户一个更安全的环境。
日前,基于JavaMail邮件系统的发展越来越成熟。
多线程的设计方法,大大的提高了系统的通信效率和成本;采用MVC设计模式的邮件系统还大大的减少了系统的维护量。
当然,基于JavaMail的邮件系统缺乏对动态页面的支持能力,没有集成有效地数据库处理功能,也存在系统扩展性差、数据处理速度稍慢等缺点。
但是,这些问题已经有了很好的起步,将不再是大的问题。
电子邮件系统经过几十年的发展,已经形成了完善的技术体系。
邮件服务器系统在保留了电子邮件系统最初的收发邮件、邮件存储等基本功能的同时,融入了最新的计算机与网络技术,使电子邮件系统有了全新的改观。
邮件技术的发展趋势如下:
(1)Web邮件技术
随着中国Internet应用的日益普及和逐步深入,这些数字仍在不断增长。
但是对于电子邮件系统来说,单纯使用邮件客户端程序进行邮件的收发已经不能满足用户移动办公的需要。
Web邮件技术的出现,彻底解决了用户办公的需要,使得邮件用户可以在任何地方使用浏览器登录邮件服务器收发邮件,而不用配置邮件客户端程序。
(2)多域邮件服务
所谓多域邮件服务,即是一台物理服务器为多个独立注册Internet域名的企业或单位提供电子邮件的服务,在逻辑上,这些企业和单位拥有自己独立的邮件服务器,也可以称为虚拟邮件服务器技术。
对于ISP提供商和企业集团公司来说,多域邮件服务器的支持能力是选择邮件服务器的一个重要考虑因素。
它可以方便地扩展其横向邮件服务能力。
(3)Linux邮件服务器
Linux操作系统作为目前应用最为广泛的开源操作系统,具有性能稳定、可靠性高和价格低廉的特点。
使用Linux作为邮件服务器,主要是可以与Sendmail、MySQL等开源软件共同使用,在满足用户需求的基础上降低了系统价格。
(4)安全防护
现在的邮件服务器在安全防护技术上有了较大的提高,包括数据身份认证、传输加密、垃圾邮件过滤、邮件病毒过滤、安全审计等的多项安全技术在邮件服务器中都得到了很好的应用。
(5)多语言
目前光中文就有若干字符集,如GB-18030、GB-2312、Big5等等,虽然我们可以统一标准,但是,在实际的过程中,我们不可能统一所有的邮件客户端,因此我们只能要求邮件服务器支持多语言的环境,使“我们的沟通无障碍”。
(6)远程监控和性能调整
由于目前许多邮件服务器处于电信托管等方式,不可能经常进行本地操作,因此目前邮件服务器均提供了远程邮件监控的功能。
我们可以通过Web方式,监控邮件服务器的工作状态,包括在线用户数、邮件处理数量和速度、存储空间使用率等,并且可以随时对出现的发信高峰和网络攻击进行远程处理[2]。
总之,计算机的广泛应用,Internet的不断发展,E-mail在日常通讯中的地位越来越重要。
虽然传统的C/S模式的邮件系统仍占有重要地位,但基于JavaMail的邮件收发系统会以其快捷、方便的等等优点为越来越多的人所接收,广泛的应用到各个领域,成为一名后起之秀。
1.3研究现状
E-mail是信息化时代最重要的联系工具之一,在日常的工作学习中具有非常重要作用。
对E-mail的研究也层出不穷,基于JavaMail邮件系统的设计与实现大多数都是研究和使用Sun公司提供的JavaMailAPI去实现其邮件发送和接收功能。
电子邮件的研究也存在着以下的问题:
(1)Unix式的平台
在Unix平台下以Sendmail的资格最老,但是由于Unix系统是开发源代码的,所以导致Sendmail有不少代码缺陷和漏洞,如有些代码缺陷可以让攻击者远程地利用红帽子或SlackwareLinux软件的计算机,APP漏洞,即用sendmail系统的APP漏洞能够取得root权限。
(2)Winodws式的平台
在windows领域种类繁多的邮件服务器中,微软的Exchange排在首位,但是它存在着以下问题:
a该系统只能运行在WindowsNT上,而WinNT本身的不可靠、不稳定决定了ExchangeServer的不稳定、不可靠。
bExchangeServer具有严重的内存泄漏问题,随着系统运行时间的增加会越来越慢,平均至少要一周重启一次。
cWindowsNT系统面临着巨大的病毒感染隐患,一旦ExchangeServer感染病毒,会造成ExchangeServer本身的瘫痪,感染速度惊人。
杀毒软件只会“亡羊补牢”。
dExchangeServer对邮件账户的支持是非常有限的,一般超过200个用户是系统就会效率低下,提升性能只能依靠昂贵的硬件。
eExchangeServer自身安全防范较弱,容易被外界利用来转发邮件,甚至冒充内部人员发送垃圾邮件。
fExchangeServer维护困难,拥有成本高,每个用户需交纳10美元许可费。
除了Exchange外,LotusNotes基本上还是一套OA和工作流系统,其邮件功能十分有限。
国内用户反映的问题[3]主要有:
a邮件系统经常不能正常收发,需频繁的重启动服务器或清理邮件系统。
b经常被外界利用来转发邮件。
c不能和部分邮件系统很好兼容,系统收到的263和163信箱的邮件显示为乱码,收不到hotmail的邮件。
dOA功能丰富,但是邮件系统不够可靠,效率低,超过300人时,收信速度明显变慢。
e拥有成本高,每个用户的成本是21美元,比ExchangeServer还贵。
邮件系统市场是个刚刚形成的市场,格局还有很大的变数。
同时企业用户对邮件系统产品的各项性能不太熟悉,在对邮件系统的好坏没有很清晰的评判标准时,往往很注重系统提供商的成功案例,也就是系统提供商的业界背景。
企业购买邮件系统主要是为了提高办公效率,所以力图控制成
本。
用户需要更标准的产品以减小整体拥有成本。
产品整体化可为企业维护降低成本,但需要更容易定制化来满足用户个性化需求。
另外,不同的ISP[4]需要个性化的标志以区别同类产品,价格和产品性能同为企业用户购买时的重要参照。
电子邮件系统应该具备无限的扩展能力,Internet网络的一个特性是变化无常,我们需要应对随
时而来的应用尖峰。
因此,我们需要电子邮件系统具有无限的可扩展能力,这个能力主要体现在邮件的处理能力和邮件的存储能力上。
为了能够使邮件的处理能力可以无限扩展,就需要引入集群和负载均衡技术,使应用平台可以在需要的时候无限扩充,满足长期或临时的业务需要。
为了便于邮件存储,需要高性能的邮件存储解决方案,最为理想的应该是SAN技术在邮件服务器领域的应用。
总之,电子邮件是一项系统工程,需要网络、数据存储、数据库、操作系统等技术的支持。
因此电子邮件系统的每一次技术革新都是在其他技术发展的基础之上的。
第二章相关邮件协议和JavaMailAPI
2.1相关邮件协议
邮件的传送要依赖于具体的传输协议,主要有:
SMTP、POP3、MIME。
(1)SMTP:
简单邮件传输协议,它是一组用于由源地址到目的地传送邮件的规则,或者说是由它来控制信件传输的一种中转方式。
SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转邮件时找到下一个目的地。
通过SMTP协议所指定的服务器,我们就可以把Email寄到收信人的服务器上了,整个过程只需要几分钟。
SMTP的开发最初是为了在封闭的网络中传送相对来说不太重要的简短信件,而不是为了在互联网中传送重要而敏感的信息,因此最初通过SMTP传输信件时,安全性不高。
(2)POP:
邮局协议[5],当前的版本为3,也称作POP3。
POP是一种允许用户从邮件服务器收发邮件的协议,它有两种版本,即POP2和POP3,都具有简单的电子邮件存储转发功能。
POP2和POP3本质上类似,都属于离线式工作协议,但是由于使用了不通的协议端口,两者并不兼容。
与SMTP协议相结合,POP3是目前最常用的电子邮件服务协议。
在离线工作方式下,用户收发邮件时,首先通过POP3客户程序登录到支持POP3协议的邮件服务器,然后发送邮件及附件;接着,邮件服务器为该用户收存的邮件传送给POP3客户程序,并将这些邮件从服务器上删除;最后,邮件服务器将用户提交的发送邮件,转发到运行SMTP协议的计算机中,通过它实现邮件的最终发送。
在为用户从邮件服务器收取邮件时,POP3是以该用户当前存储在服务器上全部邮件为对象进行操作的,并一次性将它们下载到用户端计算机中。
一旦客户的邮件下载完毕,邮件服务器对这些邮件的暂存托管即告完毕。
使用POP3,用户不能对他们贮存在邮件服务器上的邮件进行部分传输,离线工作方式适合那些从固定计算机上收发邮件的用户使用。
(3)MIME:
多用途网际邮件扩充协议,是最初的互联网电子邮件协议的一个扩展,说明了如何安排消息格式使消息在不同的邮件系统内进行交换。
MIME的格式灵活,使人们能使用这一协议在互联网上交换不同类型的数据文件:
音频,视频,图像,应用软件和其他类型的文件,也包括在最初的协议—简单邮件传送协议(SMTP)中的ASCII文本。
(4)IMAP:
IMAP使用在接收信息的高级协议,目前版本为第4版,所以也被称为IMAP4。
需要注意的是在使用IMAP时,邮件服务器必须支持该协议。
从这个方面讲,我们并不能完全使用IMAP来替代POP,不能期待IMAP在任何地方都被支持。
假如邮件服务器支持IMAP,那么我们的邮件程序将能够具有以下被IMAP所支持的特性[6]:
每个用户在服务器上可具有多个目录,这些目录能在多个用户之间共享。
其与POP相比高级之处显而易见,但是在尝试采取IMAP时,我们认识到它并不是十分完美的。
由于IMAP需要从其它服务器上接收新信息,将这些信息递送给用户,维护每个用户的多个目录,这都为邮件服务器带来了高负载。
并且IMAP与POP的一个不同之处是POP用户在接收邮件时将从邮件服务器上下载邮件,而IMAP允许用户直接访问邮件目录,所以在邮件服务器进行备份作业时,由于每个长期使用此邮件系统的用户所用的邮件目录会占有很大的空间,这将直接导致邮件服务器上磁盘空间暴涨。
(5)NNTP和其它的第三方协议:
正因为JavaMailAPI在设计时考虑到与第三方协议实现提供商之间的分离,故我们可以很容易的添加一些第三方协议。
SUN维护着一个第三方协议实现提供商的列表:
2.2JavaMailAPI
2.2.1JavaMailAPI简介
JavaMailAPI是SUN为Java开发者提供对电子邮件处理的延伸,能用于读取、编写和发送电子消息的包(标准扩展)。
为管理电子邮件提供了统一的应用编程接口,它可以处理各种e-mail格式(包括IMAP、POP、SMTP以及MIME)和其他Internet相关的讯息通信协定。
用户可使用这种包创建邮件用户代理(MailUserAgent,MUA)类型的程序,它类似于Foxmail、Eudora以及MiceosoftOutlook这些邮件程序。
其主要目的不是像发送邮件或其他邮件传输代理(MailTransferAgent,MTA)类型的程序那样用于传输、发送和转发消息[7]。
换句话说,用户可以与MUA类型的程序交互,以阅读和撰写电子邮件。
MUA依靠MTA处理实际的发送任务。
2.2.2JavaMailAPI核心类
(1)Session:
Session类定义了基本的邮件会话。
就像Http会话那样,我们进行收发邮件的工作都是基于这个会话的。
Session对象利用了java.util.Properties对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。
Propertiesprops=newProperties();
//fillpropswithanyinformation
Sessionsession=Session.getDefaultInstance(props,null);
Session类的构造方法是私有的,所以我们可以使用Session类提供的getDefaultInstance()这个静态工厂方法获得一个默认的Session对象:
Propertiesprops=newProperties();
//fillpropswithanyinformation
Sessionsession=Session.getInstance(props,null);
或者使用getInstance()这个静态工厂方法[8]获得自定义的Session:
从上面的两个例子中不难发现,getDefaultInstance()和getInstance()方法的第二个参数都是null,这是因为在上面的例子中并没有使用到邮件授权。
在对mailserver进行访问的过程中使用共享的Session是足够的,即使是工作在多个用户邮箱的模式下也不例外。
(2)Message:
一