基于JavaMail的电子邮件收发系统的设计与实现.docx
《基于JavaMail的电子邮件收发系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于JavaMail的电子邮件收发系统的设计与实现.docx(40页珍藏版)》请在冰豆网上搜索。
基于JavaMail的电子邮件收发系统的设计与实现
第1章概述错误!
未定义书签。
1」研究目的和意义错误!
未定义书签。
1.2国内外发展趋势和现状2
1.3系统特点错误!
未定义书签。
第2章相关技术和工具简介6
2.1Swing简介6
2.2JavaMail简介6
2.3Java平台简介7
2.4Eclipse简介7
第3章系统需求分析和总体设计9
3」用户对电子邮件系统的需求9
3.2产品可行性分析10
3.3系统总体设计错误!
未定义书签。
_3.3.1电子邮件系统的功能12
332电子邮件收发过程13
3.3.3服务器参数的设置14
第4章详细设计15
4.1登录功能的设计错误!
未定义书签。
4.2发送邮件的设计错误!
未定义书签。
4.3接收邮件的设计错误!
未定义书签。
4.4邮件管理的设计错误!
未定义书签。
第5章系统功能的编码实现错误!
未定义书签。
5」用户登录界面的实现错误!
未定义书签。
5.2主界面的实现19
5.3邮件配置界面的实现20
5.4发送邮件界面的实现21
5.5接收邮件界面的实现错误!
未定义书签。
第6章系统实现的功能测试
6.1登录测试
6.2发送测试
6.3接收邮件测试
31
6.4查看邮件测试
3错误!
未定义书签。
附录:
部分源程序代码附件1:
开题报告附件2:
译文及原文影印件
随着信息时代的到来,Internet的广泛应用,相信大家对qq邮箱,163邮箱,yahoo邮箱已经并不陌生,这一类邮箱的出现是计算机和网络不断发展的结果,与每个人都密不可分,已经成为网络中最广泛使用的一部分。
1.1研究目的和意义
从人类发展开始,信息交换一直都是人类的基本需求之一。
人们会通过各种途径来实现信息的交换,从而达到一种交流。
从以前的快马送信和口耳相传到如今的电话电脑和邮政系统,随着先进技术的不断进步,人类信息交流的方式也一直在进步,其中电子邮件服务就是汁算机和网络技术出现之后的一个例子。
它较以前更加方便快捷,深受人们的喜爱。
电子邮件乂被称为电子邮箱,是一种典型的通过先进技术的电子手段提供信息交换的一种通信方式,同时也是Internet的所有应用中最广泛的服务。
电子邮件不是只局限于信件的传递了,而是另外还包括文件,声音及图形图像等信息的传递。
这种非交互式的通信方式,加速了数据传送从而更快的达到信息的交流,促进了社会的发展。
她是一种简单且快速的方法,电子邮件系统通过连上全世界的网络,用户就可以免费地并且非常快的(儿秒钟之内)可以将信息发送到世界上任何你指定的目的地。
同时,用户也可以从电子邮件系统中得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。
这是任何传统的方式也无法相比的。
电子邮件最显著地特点是“存贮转发式”服务,并不是一种“终端到终端“的服务,利用这种存贮转发可以进行异步通信,即信件发送人可以在任何时间任何地点发送文件,这并不要求接收者必须同时在场,即使是对方不在,发送者的邮件还是可以立刻送到对方的信箱内,并进行了存储,这样接收者可以在他方便时登录邮箱来收取邮件,来查看邮件内容,这不必受到时间空间的限制。
这种存贮转发服务也正是电子邮箱系统的核心。
随着上网用户越来越多,上网速度越来越快,作为网络基础应用的电子邮件系统所面临的问题也日益突出,不管是使用免费的邮箱,还是I等,还是使用收费的个人邮箱,ISP提供的虚拟机邮箱都存在着种种问题。
介于当下流行的各大邮件客户端软件的除了最主要的收发信件之外,功能越来越复杂,但是我们的日常生活中
第1页共42贞真正用到的功能却很少,同时作为中小型企业,邮箱的成本也越来越高,很多功能尤其对于计算机知识相对缺乏的人来说,显得太过华丽且不太实用。
有鉴于此,在了解smtp和pop3等底层协议的基础之上,开发了这个各种功能相对简单实用的邮件系统,简化了用户的操作。
1・2国内外发展趋势和现状
电子邮件是互联网最基本且最重要的服务之一。
据统计,訂前全世界的电子邮件账号超过15亿个,电子邮件成为Internet上所占比例最大的应用。
中国互联网络信息中心关于中国互联网发展状况统计•报告(2005年1月)表明,我国口前上网人数9400万,人均拥有电子邮箱1.5个。
还有另一项数据表明,互联网上白分之三十的业务量都是电子邮件,由于我国通信设施较差,以及网络速度慢等弊端,快捷的电子邮件服务更具实用性。
《CINNIC中国互联网络发展状况统计•报告》中指出,中国用户最常使用的网络服务71.65%是电子邮件,而搜索引擎和上传或下载服务分别只占50.40%和44.16%。
早期的电子邮件系统在网络形成的时候就已经出现了,1961年的时候,麻省理工学院在7094大型机系统上开发出了一套兼容时分共享系统(CTSS)o这也允许许多用户使用主机的新能力,使用户可以用新的方法来共享信息。
当CTSS系统的用户需要向其他用户传递信息时,他们会在一个通用的目录下以“TOTOM”之类的文件名简历一个文件,查看或者打印其中的内容,在这种简单的信息发送方法的基础上,出现了第一个"邮件”工具,通过这个工具,CTSS系统的管理员可以向用户发送信息。
例如某个用户他丢失的文件已经通过备份找回,这是通过在目录用户中创建特定的文件来实现的。
这以后,CTSS系统上也出现了用于用户之间信息传递的邮件工具。
在其他的多用户系统上,也陆续开发和使用了类似的邮件软件。
这些软件的工作原理类似,都是在用户目录下设置一个特殊的H录,一个用户给另一个用户发信时,就在收信者的牡蛎下建立一个新的文件,并在其中保存新建的内容。
当收信者稍后登陆的主机上时,检查该目录就可以知道自己有新的邮件,并可以打开和查看邮件内容,这些早期的邮件系统虽然非常简陋,也存在很多问题,但是其基本思想都是通过文件的传递来实现用户之间的异步传输,和今天所用的电子邮件系统基本相同。
现代电子邮件系统正式在这些原始的邮件软件基础上发展而来的。
到了20世纪60年代末70年代初,在美国国防部领导下,现代INTERNET的前身-ARPANET开始建立和运行,它将成员单位的多台主机连接起来组成了一个网络。
当
第2页共42贞时,网络内的大部分主机上都已经有了内部的邮件系统,于是一个很自然的想法出现了,就是能否利用ARPANET使这些邮件系统能够相互通信。
事实上,邮件系统的互联正式ARPANETA最早期的网络应用尝试之一。
1969年,在ARPANET原型网还在试验的时候,拉里罗伯特编写了第一个通过网络发送电子邮件的程序。
1971年1月,ARPARFC196《邮箱协议(MailBoxProtocol)》中讨论了如何通过ARPANET发送邮件的问题。
之后有多个类似的RFC文件进行了这个方面的探讨。
由于当时FTP协议已经比较成熟,而邮件发送一直没有成熟的协议,所以一些人开始研究利用FTP协议来发送邮件的方法。
1972年8月,在RCF385《关于FTP协议的注释》中第一次提出通过扩展FTP协议的方法来发送电子邮件。
之后的一些RFC文件进一步对该方案进行了改进。
在1973年一次会议上,大家统一在FTP命令中使用“用户名@主机名”形式的地址来标明邮件地址,这被写入了RFC469文件。
RFC498则提出了不用FTP协议进行邮件传输的方法。
这些方案山于各种原因都未能得到推广使用,ARPANET上的邮件系统一直处于各自为政的状态。
除了邮件收发的问题外,邮件格式也是电子邮件协议中的一个重要内容。
1977年,洛克等人提出来一个统一的邮件格式标准,也就是后来的RFC733.但是这次统一邮件格式标准的尝试并未能获得成功。
这便是早起ARPNET上的电子邮件系统。
早起的各种基于网络的电子邮件传输协议都存在这样那样的问题。
要么功能不完善,要么过于复杂。
人们需要的是一个全新的,易于实现而有功能强大的电子邮件传输协议。
1980年,RFC772《邮件传输协议》发布了,其中描述了一个全新的邮件传输协议。
但是这个协议还是过于复杂了,于是人们在它的基础上乂进行了改进,纵欲在1981年的RFC780中发布了简单邮件传输协议,经过一些晓得改进后,最总形成了RFC821《SMTP协议》,这也正是今天的电子邮件系统的标准传输协议。
统一的邮件传输协议自然需要统一的邮件格式,1982年,克鲁克在RFC733的基础上编写RFC822MPRAInternet文本信息格式标准》,他也最终成为电子邮件的标准格式。
但是在RFC822格式中,邮件都是文本格式的,没有考虑非文本的邮件内容问题。
很快人们就对电子邮件提出更多的要求,希望能用它来发送非文本格式的附件,如图片,多媒体文件等。
于是在1996年乂发布了RFC2045—2049,规定了MIME编码格式。
通过这种格式,可以实现各种文件和文本信息之间的无损转换,这样就可以将他们封装在标准RFC822格式的文本邮件中直接发送,从而使电子邮件系统也可以发送非文本的信息To
第3页共42贞
后来,人们根据邮件系统中使用的问题,乂陆续对SMTP协议以及其父树协议进行了一些小的修改,如增加用户身份认证功能等。
到U前为止,SMTP协议的最新版本是RFC2821,邮件格式规范的最新版本是RFC2822o这便是现代电子邮件系统的出现。
从以上分析中可以得出这样的结论,山于在电子邮件系统存在的种种缺陷,我们要学会重新设计出一种全新的,每个地方都考虑到并彻底解决各种安全问题和隐患的电子邮件系统,用它来代替现有的电子邮件系统给人们提供更高一层的服务。
但遗憾的是,山于各种现实的问题,(如环境,技术,资金等)使其在可预见的未来,仍然是一个不可能实现的任务,但是无论如何,一个已经成功的或者试图成功的电子邮件系统,必须要能够较好的解决这些问题【2】。
1.3系统特点
邮件服务器提供的服务类型,可以分为发送邮件服务器(简称发送服务器)和接收邮件服务器(简称接收邮件服务器)。
发送邮件服务器使用邮件发送协议,现在常用的是SMTP,所以通常发送邮件服务器也称为SMTP服务器;接收邮件服务器使用接收邮件协议,常用的是POP3协议,所以通常接收邮件服务器也称为POP3服务器。
SMTP(SimpleMailTransferProtocol),即简单的邮件传送协议,是互联网传送电子邮件的基本协议,是TCP/IP协议组的成员,它可以解决邮件系统如何通过一条链路,把邮件从一台机器上传送到另一台机器上的问题,它的特点是具有很好的可伸缩性和简单性,因此它在广域网和局域网都能适用,并且在Internet±能够发送邮件的服务器儿乎都支持SMTP协议,这也正是它成功的关键。
服务器接收客户端发过来的SMTP协议格式的命令,这些命令有HELONAILFROM.RCPTTO,DATA,QUIT,服务器接到这些命令后,给出对应的响应码,然后发给客户端。
POP3(PostOfficeProtocol3)是邮局协议的第3个版本,它规定邮件客户端怎么从服务器那里接收邮件,是第一个电子邮件的离线协议标准。
它既允许接收服务器向邮件用户发送邮件,也可以接收来自SMTP服务器的邮件,邮件客户端软件会与POP3服务器之间进行交互,下载由POP3服务器接收到的邮件,POP3协议支持用户从服务器上接收邮件然后存储到自己的计算机上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,服务器接收客户端发过来的POP3协议格式的命令,这些命令有USER.PASS,LIST,RETR.DELE,REST,QUIT,服务器接到这些命令后,给出对应的响应信息+OK或者-ERR,然后连同邮件信息发给客户端。
基于POP3协议的邮件系统能提供快捷,实惠的服务,因此深受广大用户的青睐°POP3协议也是TCP/IP协议族中的一员,
第4页共42贞
由RFC1939定义。
第2章相关技术和工具简介
第5页共42贞
2.1・Swing简介
Swing是一个专门用于开发Java用户界面程序的工具包。
它是在抽象窗口工具包(AWT)的基础上让跨平台JAVA程序能够使用所有可插拔的界面风格,Swing程序员只需要用简单的代码就能够利用Swing模块化的,丰富的功能和灵活的组件来编出漂亮的系统界面。
工具包中的包都以swing来命名的,例如javax.swing.evento
Swing开发包全部是用Java来实现的,Swing本身不依赖于操作系统,也没有除JAVA之外的其它代码,是一个轻量级的组件,这就是他和AWT的却别。
因为AWT是通过与具体操作系统相关的对等类来实现的,所以Swing要比AWT具有更加强的实用性。
Swing在所有平台上的表现都是一致的,并且能表现岀除当前系统之外的其它界面风格。
Swing效仿了MVC的设计模式,即“模型-视图-控制〃,其中模型是专门用来存放内容的,视图是专门用来查看内容的,控制器是用来负责用户输入的。
在AWT中,山于控制界面外观的对等类和具体的平台息息相关,因而AWT组件的外观只和本机的外观相关,但是Swing能使程序在一个操作系统上运行的时候有不同的外观以供用户可以选择自己习惯的外观。
2.2JavaMail简介
JavaMail是山Sim提供的API,但是它没有被放在JAVA标准的基本开发包中,表明你在开发JAVAMAIL系统时需要另外下载JAVAMAIL包。
另外,你还得下载Sun公司的JAF包,JAF非常复杂,JAVAMAIL的运行需要JAF的支持。
JavaMail包是可选的,因此如果需要使用的话你需要首先从下载。
U前最新版本是JavaMaill.4,使用JavaMail的时候需要下载JAF,安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改CLASSPATH的话,可以直接把他们的jar包copy到JAVA_HOME/lib/ext下,这样JavaMail就安装好了问。
JavaMail包中用于处理电子邮件的核心类是:
Session,Message,Address,Authenticator,Transport,Store,Folder等。
Session定义了一彳、基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。
另外很好的实现了JavaMailAPI的框架有James、SpringMailo
2.3Java平台简介
Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接
第6页共42贞口,而不管下层操作系统是什么,Java平台更分细一点的话主要是由一个compiler(编译器),一个运行环境(runtimeenvironment),和一个核心的API组成。
Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分,在安装了Java运行平台后,Java程序就能够被运行了。
JavaAPI为分为基本部分与扩展部分,Java应用提供了一个独立于操作系统的标准接口。
因此Java程序只需要编译一次,就可以在所有系统中运行。
Jas应用编程接口已经从l.lx版发展到1.2版。
目前常用的JDK版本是1.6,最新版本为1.7。
与传统程序不同,Sun公司在推出Java之际就将其作为一种开放的技术,全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容,
“Java语言靠群体的力量而非公司的力量”为Sun公司的一个口号,并得到了大多数软件开发公司的认同,这和微软公司的模式不同,微软提倡的是注重精英和封闭的模式,Java程序设计语言是个面向对象的,简单的、解释性的、分布式的、安全的、健壮与系统无关、高性能、可移植、动态和多线程的语言。
Java平台是基于Java语言的平台,这样的平台非常流行,因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言,Java是一个可以在不同操作系统(例如windows,unix等)上运行的编程语言,java平台是指运行在各种终端(如pc、服务器、移动设备、嵌入式设备)的系统软件,PC机上的java程序是用javaSE开发出来的,服务器端的java程序是用javaEE开发出来的,移动设备的java程序是用javaME开发出来的。
2.4Eclipse简介
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)o
虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
山于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++和COBOL等编程语言的插件已
第7页共42贞经可用,或预讣将会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于Eclipse的应用程序的一个突出例子是IBM®Rational®SoftwareArchitect,它构成了IBMJava开发工具系列的基础。
至于Eclipse的安装首先要创建一个java的工作环境,在sun的网站上下载j2se,安装到自己的系统中,我下载的是1.4版本,安装LI录为“D:
\j2sdkl42_04”。
下载地址为:
http:
//java.sun.eom/j2se/l.4.2/download.html
设置环境参数的步骤如下:
右键“我的电脑”一“属性”一“高级”一“环境变量”增加:
java_home=D:
\j2sdk1.4.2_04\
ClassPath=d:
\j2sdk1.4.2_04\;d:
\j2sdk1.4.2_04\lib\tools.jar;d:
\j2sdk1.4.
2_04\lib\dt.jar;d:
\j2sdk1.4.2_04\bin
Path=d:
\j2sdk1.4.2_04\bin\环境就设置好了。
第3章系统需求分析和总体设计
3.1用户对电子邮件系统需求
(1)方便性。
电子邮件系统可以像离线QQ信息一样,在自己有时间的时候可以处理记录下来的请求,通过电子邮件可以方便快捷地传送文本信息、图像文件、报表和计算机程序等信息。
(2)快捷性。
电子邮件在传递过程中,若某个通信站点发现用户给出的收信人的电
第8页共42贞子邮件地址有错误而无法继续传递时,电子邮件会迅速地将原信件逐站退回,并告知其原因。
当邮件被送到口的地后,该汁算机的邮件系统就立即将它放人收件人的信箱中,等候用户自行读取。
用户只要随时以计算机联机方式打开自己的电子邮件信箱,便可以查看自己的邮件。
(3)广域性。
电子邮件系统具有开放性,许多没有连接到互联网的用户能够通过本机的网关(Gateway)和网络上的用户相互交换邮件。
(4)透明性。
电子邮件系统采用“存储转发”的方法帮助用户传送电子邮件,通过在互联网络的一些通信节点计算机上运行相应的软件,使这些计算机充当“邮局”的角色。
当用户希望通过互联网络给别人发送邮件时,首先要与为自己提供电子邮件的讣算机联机,然后把要发送的邮件和收件人的邮件地址发给邮件系统。
电子邮件系统就会把用户的邮件通过网络一站一站地送到H的地,所有过程对于用户来说都是透明的。
(5)廉价性。
网络的空间可以说是无限大的,公司能够将不同的产品以及服务信息放置在网络上,这样用户就能够随时从网络上获取这些信息,并且相对于电话,邮寄或印刷来说在网上存储与发送信息是非常廉价的。
在公司与顾客“一对一”关系的电子邮件服务中,费用低廉,从而节约大量费用。
(6)全天性。
对顾客而言,电子邮件的优点之一是没有任何时间上的限制。
一天24小时,一年365天内,任何时间都可发送电子邮件。
比如,当顾客发生问题时,他们随时都可以把发生的问题发送给公司,而公司有关负责人可以在他方便的时候,查阅这些信件,决定哪些信件必须首先处理,哪些可以稍后处理,哪些应该转发给其他部门去承办。
而以前没有电子邮件时,顾客的产品本身或产品在使用过程中发生了问题,需要等到公司人员上班时,才能给公司打电话。
而且什么时候打电话也很讲究,打早了,公司负责人还没有上班,打晚了公司负责人乂可能出去开会了。
电子邮件的全天候服务,从根本上解决了这种状况,大大改善了公司与顾客的关系,改善了公司对顾客的服务。
3.2产品可行性分析
电子邮件系统包括电子邮件客户端和电子邮件服务器端,其中通过SMTP协议进行发送邮件,POP3协议进行接收邮件。
电子邮件系统的工作过程和相关收发协议如下图:
第9页共42贞
图3.1电子邮件系统工作过程图
JavaMail是Sun发布的用来处理E-mail的APL它可以方便的执行一些常用的邮件传输。
JavaMailAPI是Java对电子邮件处理的延伸,它可以处理各种E-mail格式,包括IMARPOP3,SMTP,为Java应用程序提供了收发电子邮件的公共接口,如下图所示:
JavaMailAPI
JavaMailAPI应用
图3.2JavaMailAPI的客户端工作原理图
JavaMailAPI主要位于javax.mail,internet中,主要类框架图如下:
第10页共42页
图3.3JavaMailAPI中主要类的框架图
1.javax.mail.Session:
Session类代表JavaMail中的一次邮件会话.每个基于JavaMail的应用程序至少有一次会话,也可以产生多次会话.发送邮件之前,通常应该建立邮件会话。
它的作用有:
(1)接收各种配置属性信息:
通过Properties对象设置的属性信息;
(2)初始化JavaMail环境:
根据JavaMail的配置文件,初始化JavaMail环境以便通过Session对象创建其他重要类的实例。
2.javax.mail.Transport:
邮件操作只冇发送或接收两种处理方式,JavaMail将这两种不同操作描述为传输(javax.mail.Transport)和存储(javax.mail.Store),传输对应邮件的发送,而存储对应邮件的接收。
3.java.mail.Store该类实际特定邮件协议上的读,写,监视,查找等操作,通过javax.mail.Store类可以访问javax.mail.Folder类.
4.javax.mail.MimeMessage该对象是实际发送的电子邮件的信息.邮件对象通常使用MimeMessage创建,创建该对象时应传入一个邮件会话参数.该类采用InternetHeaders类来解析和保存e-mail