基于javaMail电子邮件系统的设计(含源文件)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计I报告题目:电子邮件系统设计
专业软件工程
学生姓名 ****** 班级学号 ********** 指导教师********
指导单位计算机学院软件工程系日期2009.6.10——2008.6.22
1、课题名称
电子邮件系统设计
2、课题内容
设计一个电子邮件系统,包括客户端和服务器端的设计、邮件处理过程建模和具体功能的实现等。
3、系统分析
电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。电子邮件把邮件发送到 ISP 的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到ISP 的邮件服务器进行读取。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。
现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。
本系统分析中给出了电子邮件服务器和电子邮件客户端的简介,同时给出了本次试验中客户端的主要功能和总体框图。
邮件服务器按照提供的服务类型,可以分为发送邮件服务器(简称发送服务器)和接收邮件服务器(简称接收服务器)。
发送邮件服务器使用邮件发送协议,现在常用的是SMTP,所以通常发送邮件服务器也称为SMTP服务器;
接收邮件服务器使用接收邮件协议,常用的有POP3协议和IMAP协议,所以通常接收邮件服务器也称为POP3服务器或IMAP服务器。
SMTP(Simple Mail Transfer Protocol),即简单邮件传输协议,是Internet传送E-mail的基本协议,也是TCP/IP协议组的成员。
SMTP协议解决邮件系统如何通过一条链路,把邮件从一台机器传送到另一台机器上的问题。
SMTP协议的特点是具有良好的可伸缩性,这也是它成功的关键。它既适用于广域网,也适用于局域网。
SMTP协议由于非常简单,使得它得到了广泛的运用,在Internet上能够发送邮件的
服务器几乎都支持SMTP协议。
POP3(Post Office Protocol 3),即邮局协议第3版,是 Internet接收邮件的基本协议,也是TCP/IP协议组的成员。RFC1939描述了POP3协议,网址为“/rfc/rfc1939.txt”。
POP3既允许接收服务器向邮件用户发送邮件,也可以接收来自SMTP服务器的邮件。
邮件客户端软件会与POP3服务器交互,下载由POP3服务器接收到的邮件。基于POP3协议的邮件系统能提供快速、经济和方便的邮件接收服务,深受用户的青睐。
IMAP(Internet Message Access Protocol),即互联网消息访问协议,是一种功能比POP3更强大的新的接收邮件协议。目前最新的IMAP协议版本为IMAP4,RFC2060描述了IMAP4,网址为“/rfc/rfc2060.txt”。
IMAP4与POP3协议一样提供了方便的下载邮件服务,允许用户在脱机状态下阅读已经下载到本地硬盘的邮件。但IMAP4的功能远远不只这些,它还具有以下功能:摘要浏览邮件的功能。
选择性下载附件的功能。
鼓励用户把邮件一直存储在邮件服务器上。
允许用户把远程邮件服务器上的邮箱作为信息存储工具。
MIME(Multipurpose Internet Mail Extensions,多用途Internet邮件扩充标准)不是邮件传输协议,而是对邮件格式所作的规范。
RFC2045、RFC2046和RFC2047对MIME作了描述。
MIME是对RFC822的扩充,RFC822规定了内容只包括采用ASCII编码的纯文本的邮件的格式,而MIME允许在邮件中包含附件。
整个电子邮件系统的工作过程及一些涉及到的协议如下图所示:
电子邮件系统包含:电子邮件服务器端和电子邮件客户端。
SUN公司制定了JavaMail API,它封装了按照各种邮件通信协议,如IMAP、POP3和SMTP,与邮件服务器通信的细节,为Java应用程序提供了收发电子邮件的公共接口,参见下图:
JavaMail API主要位于javax.mail包和javax.mail.internet中,下图为其中主要类的类框图。
1. javax.mail.Session类:表示邮件会话,是JavaMail API的最高层入口类。
2.javax.mail.Store类:表示接收邮件服务器上的注册用户的存储空间,通过Store类的getFolder()方法,可以访问用户的特定邮件夹。
3. javax.mail.Folder类:代表邮件夹。
4. javax.mail.Message类:代表电子邮件。
5. javax.mail.Address类:代表邮件地址。
6. javax.mail.Transport类:根据指定的邮件发送协议(通常是 SMTP),通过指定的邮件发送服务器来发送邮件。
电子邮件服务器的最简模型如下图:
电子邮件服务器的结构一般如下图所示:
电子邮件服务器还能在本机和客户端进行连接使用(即主机上的SMTP服务器还可能与其他SMTP服务器会话以发送邮件)如下图:
按照MIME规范,电子邮件包括邮件头和正文两部分。邮件头中包括日期、发送者地址、接收者地址和主题等信息。正文部分可以包括普通文本内容,还可以包括一个或多个附件。
javax.mail.Message抽象类表示邮件,它的具体子类为javax.mail.MimeMessage 类,它提供了读取和设置邮件中各个部分的getXXX()和setXXX()方法:setSubject(String subject)方法设置邮件的主题。
setHeader(String name, String value)方法设置邮件头部的某一项。
setContent(Object o, String type)方法设置邮件的正文。
javax.mail.Address抽象类表示邮件地址,它的最常用的子类是javax.mail.InternetAddress类。
InternetAddress类表示Internet网上通用的邮件地址,形式为******************,或者“Admin<******************>”。
电子邮件客户端是安装在个人电脑上面的一种软件,用于和电子邮件服务器端的连接。
基本上所有的客户端一般都有以下四个基本功能:
•a.通过POP3收取用户各种邮箱的邮件。由于考虑到POPular服务器地址的不同,但又可以接收不同邮箱地址的邮件,所以增加了这个功能。
b.在线阅读邮件,这个功能是电子邮件系统必备的功能。
•c.接收保存邮件,用户可以再阅读邮件之后,将其保存起来,在需要的时候再次阅读。
•d.在线处理邮件,如果收到一些垃圾邮件或者不是很重要的邮件,那么用户可以将它们放到垃圾箱或者然后在去垃圾箱中将它彻底删除,这是最好的办法。这个时候就要引入在线处理邮件功能,这个功能能够删除邮件。
•e.发送附件。有时候邮件太长,或者是表格、Word文档,一正文方式发送不太方便,这样可以引用一个附件功能。及那个这些表格或Word文档以附件的形式上传,让后发送。在扩充一下,提供可以发送多个邮件的功能。(本功能为扩展功能,本系统并未实现)。
•f.接收附件,相对于发送附件而言,接收附件的功能必不可少。不然不能阅读邮件的内容。同样,应该扩充可以接受多个附件的功能。
•g.SMTP验证,当前大部分的SMTP服务器,在用户发送邮件的时候,都需要进行用