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