基于javaMail电子邮件系统的设计(含源文件)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

-课程设计I报告题目:电子邮件系统设计专业软件工程学生姓名******班级学号**********指导教师********指导单位计算机学院软件工程系日期2009.6.10——2008.6.22-1、课题名称电子邮件系统设计2、课题内容设计一个电子邮件系统,包括客户端和服务器端的设计、邮件处理过程建模和具体功能的实现等。3、系统分析电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。电子邮件把邮件发送到ISP的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到ISP的邮件服务器进行读取。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。本系统分析中给出了电子邮件服务器和电子邮件客户端的简介,同时给出了本次试验中客户端的主要功能和总体框图。邮件服务器按照提供的服务类型,可以分为发送邮件服务器(简称发送服务器)和接收邮件服务器(简称接收服务器)。发送邮件服务器使用邮件发送协议,现在常用的是SMTP,所以通常发送邮件服务器也称为SMTP服务器;接收邮件服务器使用接收邮件协议,常用的有POP3协议和IMAP协议,所以通常接收邮件服务器也称为POP3服务器或IMAP服务器。SMTP(SimpleMailTransferProtocol),即简单邮件传输协议,是Internet传送E-mail的基本协议,也是TCP/IP协议组的成员。SMTP协议解决邮件系统如何通过一条链路,把邮件从一台机器传送到另一台机器上的问题。SMTP协议的特点是具有良好的可伸缩性,这也是它成功的关键。它既适用于广域网,也适用于局域网。SMTP协议由于非常简单,使得它得到了广泛的运用,在Internet上能够发送邮件的-服务器几乎都支持SMTP协议。POP3(PostOfficeProtocol3),即邮局协议第3版,是Internet接收邮件的基本协议,也是TCP/IP协议组的成员。RFC1939描述了POP3协议,网址为“”。POP3既允许接收服务器向邮件用户发送邮件,也可以接收来自SMTP服务器的邮件。邮件客户端软件会与POP3服务器交互,下载由POP3服务器接收到的邮件。基于POP3协议的邮件系统能提供快速、经济和方便的邮件接收服务,深受用户的青睐。IMAP(InternetMessageAccessProtocol),即互联网消息访问协议,是一种功能比POP3更强大的新的接收邮件协议。目前最新的IMAP协议版本为IMAP4,RFC2060描述了IMAP4,网址为“”。IMAP4与POP3协议一样提供了方便的下载邮件服务,允许用户在脱机状态下阅读已经下载到本地硬盘的邮件。但IMAP4的功能远远不只这些,它还具有以下功能:摘要浏览邮件的功能。选择性下载附件的功能。鼓励用户把邮件一直存储在邮件服务器上。允许用户把远程邮件服务器上的邮箱作为信息存储工具。MIME(MultipurposeInternetMailExtensions,多用途Internet邮件扩充标准)不是邮件传输协议,而是对邮件格式所作的规范。RFC2045、RFC2046和RFC2047对MIME作了描述。MIME是对RFC822的扩充,RFC822规定了内容只包括采用ASCII编码的纯文本的邮件的格式,而MIME允许在邮件中包含附件。整个电子邮件系统的工作过程及一些涉及到的协议如下图所示:-电子邮件系统包含:电子邮件服务器端和电子邮件客户端。SUN公司制定了JavaMailAPI,它封装了按照各种邮件通信协议,如IMAP、POP3和SMTP,与邮件服务器通信的细节,为Java应用程序提供了收发电子邮件的公共接口,参见下图:JavaMailAPI主要位于javax.mail包和javax.mail.internet中,下图为其中主要类的类框图。-1.javax.mail.Session类:表示邮件会话,是JavaMailAPI的最高层入口类。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(Stringsubject)方法设置邮件的主题。setHeader(Stringname,Stringvalue)方法设置邮件头部的某一项。setContent(Objecto,Stringtype)方法设置邮件的正文。javax.mail.Address抽象类表示邮件地址,它的最常用的子类是javax.mail.InternetAddress类。InternetAddress类表示Internet网上通用的邮件地址,形式为admin@mydomain.com,或者“Adminadmin@mydomain.com”。电子邮件客户端是安装在个人电脑上面的一种软件,用于和电子邮件服务器端的连接。基本上所有的客户端一般都有以下四个基本功能:a.通过POP3收取用户各种邮箱的邮件。由于考虑到POPular服务器地址的不同,但又可以接收不同邮箱地址的邮件,所以增加了这个功能。b.在线阅读邮件,这个功能是电子邮件系统必备的功能。c.接收保存邮件,用户可以再阅读邮件之后,将其保存起来,在需要的时候再次阅读。d.在线处理邮件,如果收到一些垃圾邮件或者不是很重要的邮件,那么用户可以将它们放到垃圾箱或者然后在去垃圾箱中将它彻底删除,这是最好的办法。这个时候就要引入在线处理邮件功能,这个功能能够删除邮件。e.发送附件。有时候邮件太长,或者是表格、Word文档,一正文方式发送不太方便,这样可以引用一个附件功能。及那个这些表格或Word文档以附件的形式上传,让后发送。在扩充一下,提供可以发送多个邮件的功能。(本功能为扩展功能,本系统并未实现)。f.接收附件,相对于发送附件而言,接收附件的功能必不可少。不然不能阅读邮件的内容。同样,应该扩充可以接受多个附件的功能。g.SMTP验证,当前大部分的SMTP服务器,在用户发送邮件的时候,都需要进行用-户名和密码的验证。h.邮件文件夹管理,该功能提供了用户可以再除了了有收件箱等必须得文件夹时,可以根据自己的需要创建新的文件夹用于更好大的管理自己收到的邮件,还可以重命名和删除用户自己创建的文件夹。i.回复邮件,该功能是电子邮件系统必备的功能下面列出了本系统的总体功能:电子邮件系统回复邮件阅读邮件删除邮件保存邮件文件夹管理接收邮件以附件回复以文本回复以文本接收以附件接收总之,由上面的电子邮件服务器和客户端的分析可知该电子邮件系统收发邮件的整个过程和图示如下:(1)发信人调用用户代理来编辑要发送的邮件。用户代理用SMTP把邮件传送给发送端邮件服务器。-(2)发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。(3)运行在发送端邮件服务器的SMTP客户进程,发现在邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMTP服务器进程发起TCP连接的建立。(4)TCP连接建立后,SMTP客户进程开始向远程的SMTP服务器进程发送邮件。当所有的待发送邮件发完了,SMTP就关闭所建立的TCP连接。(5)运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在方便时进行读取。收信人在打算收信时,调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中的取回(如果邮箱中有来信的话)。4、系统设计本系统基于JavaMialAPI采用B/S设计结构。使用ApacheTomcat做为WEB服务器和JSPServlet的容器。JDK中并不包含JavaMailAPI。为了开发JavaMail应用程序,需要从SUN公司的网站下载JavaMailAPI及其实现的类库,该类库由两个JAR文件组成:mail.jar和activation.jar。JavaMail应用程序在初始化过程中需要执行如下步骤。步骤(1)设置JavaMail属性:Propertiesprops=newProperties();props.put(mail.transport.protocol,smtp);props.put(mail.store.protocol,imap);props.put(mail.smtp.class,com.sun.mail.smtp.SMTPTransport);props.put(mail.imap.class,com.sun.mail.imap.IMAPStore);props.put(mail.smtp.host,hostname);以上代码设置了如下JavaMail属性:mail.transport.protocol:指定邮件发送协议。mail.store.protocol:指定邮件接收协议。mail.smtp.class:指定支持SMTP协议的Transport具体类,允许由第三方提供。mail.imap.class:指定支持IMAP协议的Store具体类,允许由第三方提供。mail.smtp.host:指定采用SMTP协议的邮件发送服务器的IP地址或主机名-步骤(2)调用javax.mail.Session类的静态方法Session.getDefaultInstance()获得Session实例,该方法根据已经配置的JavaMail属性来创建Session实例:Sessionmailsession=Session.getDefaultInstance(props);步骤(3)调用Session的getStore(Stringprotocol)方法来获得Store对象,参数protocol指定接收邮件协议:Storestore=mailsession.getStore(imap);步骤(1)把mail.imap.class属性设为com.sun.mail.imap.IMAPStore,因此以上getStore()方法返回com.sun.mail.imap.IMAPStore类的实例。步骤(4)调用Store对象的connect()方法连接到接收邮件服务器。调用connect()方法时,应该指定接收邮件服务器的主机名或IP地址、用户名和口令。store.connect(hostname,username,password);获得了Store对象后,就可以通过它来访问邮件服务器上的特定邮件用户了。通常会对邮件用户执行以下操作。操作(1)创建并发送邮件://创建邮件msg=newMimeMessage(mailsession);InternetAddress[]toAddrs=InternetAddress.parse(admin@mydomain.com,false);//设置邮件接收者msg.setRecipients(Message.Re

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功