毕业设计(论文)-基于JavaMail的邮件收发管理系统_第1页
毕业设计(论文)-基于JavaMail的邮件收发管理系统_第2页
毕业设计(论文)-基于JavaMail的邮件收发管理系统_第3页
毕业设计(论文)-基于JavaMail的邮件收发管理系统_第4页
毕业设计(论文)-基于JavaMail的邮件收发管理系统_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业论文说明书基于JavaMail的邮件收发系统设计THE MAIL SYSTEM BASED ON JAVAMAIL DESIGN学院部: 科信软件学院 2021级 专业班级: 计算机科学与技术网络方向学生姓名: 指导教师: 2021年 3月 27 日基于JavaMail的邮件收发系统设计摘 要众所周知,电子邮件在当今社会上角色之重要,应用之广泛,越来越多的人使用它,可以这样说,电子邮件充满着我们当今每个人的生活,工作与学习。虽然,现在已经存在很多的邮件效劳软件,但是绝大多数对于非专业人员使用起来还是有些难度稍显复杂的,因此我的毕业设计就基于SMTP和POP3两个主要的邮件效劳协议从底层开发

2、这个软件。SMTP协议,全称为简单的邮件传输协议,主要用于邮件的发送。POP3协议,全称为邮局协议第三版,主要用于邮件的接收。本次设计是利用J2EE(STRUTS框架),JSP,HTML,CSS,Javascript等技术来实现一个B/S架构的邮件管理系统。所谓B/S架构即浏览器和效劳器的架构Broswer&Server,浏览器的测试种类为广泛使用的IE6.0,而效劳器那么是选择了各大网站所提供的SMTP及POP3效劳器,使用本系统,您不仅可以收发一个纯文本邮件,亦可以发送带有附件的邮件,而且经测试,此软件是一个可以使用不同SMTP和POP3效劳器进行邮件收发的邮件管理软件。关键词:SMTP,

3、POP3,BS,邮件收发系统THE MAIL SYSTEM BASED ON JAVAMAIL DESIGNABSTRACTAs we all know, e-mail role in todays society the importance of wide application, more and more people use it, can be said that the e-mail flooded us today everyones life, work and study. Although it already exists a lot of mail service s

4、oftware, but the vast majority of non-professional use, or some degree of difficulty is slightly complicated, so my graduation from the ground-based SMTP and POP3 are two main e-mail service agreement to develop this software. SMTP protocol, all known as the Simple Mail Transfer Protocol is mainly u

5、sed for the sending of the message. POP3 protocol, all known as the Post Office Protocol version, mainly for the reception of the message. This design is the use of J2EE (the STRUTS framework), the JSP, as HTML, the CSS, Javascript, and other technology to achieve a B / S architecture, e-mail manage

6、ment system. The so-called B / S architecture, browser and server architecture (the Broswer & Server), the type of browser testing for the widespread use of IE 6.0, while the server is selected major websites to provide SMTP and POP3 server, use this system, Not only can you send and receive a plain

7、 text message can also send messages with attachments, and has been tested, this software can use a different SMTP and POP3 server for mail sending and receiving e-mail management software.KEYWORDS: SMTP, POP3, BS , E-MAIL SYSTEM目录 TOC o 1-3 h z u HYPERLINK l _Toc232410613 摘 要 PAGEREF _Toc232410613

8、h I HYPERLINK l _Toc232410614 ABSTRACT PAGEREF _Toc232410614 h II HYPERLINK l _Toc232410615 1 引言 PAGEREF _Toc232410615 h 1 HYPERLINK l _Toc232410616 11 电子邮件介绍 PAGEREF _Toc232410616 h 1 HYPERLINK l _Toc232410617 12 开发背景 PAGEREF _Toc232410617 h 2 HYPERLINK l _Toc232410618 13 开发环境及运行环境 PAGEREF _Toc2324

9、10618 h 2 HYPERLINK l _Toc232410619 131 开发环境 PAGEREF _Toc232410619 h 2 HYPERLINK l _Toc232410620 132 运行环境 PAGEREF _Toc232410620 h 2 HYPERLINK l _Toc232410621 2 软件架构及系统用例图 PAGEREF _Toc232410621 h 3 HYPERLINK l _Toc232410622 21 系统架构 PAGEREF _Toc232410622 h 3 HYPERLINK l _Toc232410623 22 系统总体用例 PAGEREF

10、 _Toc232410623 h 3 HYPERLINK l _Toc232410624 23 程序功能框图 PAGEREF _Toc232410624 h 3 HYPERLINK l _Toc232410625 24 发送邮件类 PAGEREF _Toc232410625 h 4 HYPERLINK l _Toc232410626 25 接收邮件类 PAGEREF _Toc232410626 h 4 HYPERLINK l _Toc232410627 3 SMTP和POP3协议的研究 PAGEREF _Toc232410627 h 5 HYPERLINK l _Toc232410628 31

11、 SMTP协议简介及工作原理 PAGEREF _Toc232410628 h 5 HYPERLINK l _Toc232410629 311 SMTP简介 PAGEREF _Toc232410629 h 5 HYPERLINK l _Toc232410630 312 SMTP协议的命令 PAGEREF _Toc232410630 h 5 HYPERLINK l _Toc232410631 313 SMTP的工作原理 PAGEREF _Toc232410631 h 5 HYPERLINK l _Toc232410632 32 POP3协议介绍和工作原理 PAGEREF _Toc232410632

12、 h 6 HYPERLINK l _Toc232410633 321 POP3 简介与命令 PAGEREF _Toc232410633 h 6 HYPERLINK l _Toc232410634 322 POP工作原理简介 PAGEREF _Toc232410634 h 7 HYPERLINK l _Toc232410635 4 RFC822(ARPA因特网文本信件格式的标准) PAGEREF _Toc232410635 h 8 HYPERLINK l _Toc232410636 41 RFC822简单介绍 PAGEREF _Toc232410636 h 8 HYPERLINK l _Toc2

13、32410637 42 信件的头部 PAGEREF _Toc232410637 h 8 HYPERLINK l _Toc232410638 421 信头的一般格式 PAGEREF _Toc232410638 h 8 HYPERLINK l _Toc232410639 422 结构化字段和非结构化字段 PAGEREF _Toc232410639 h 9 HYPERLINK l _Toc232410640 423 信头字段的元素 PAGEREF _Toc232410640 h 9 HYPERLINK l _Toc232410641 424标准的信头字段 PAGEREF _Toc232410641

14、h 10 HYPERLINK l _Toc232410642 5 重要模块设计 PAGEREF _Toc232410642 h 14 HYPERLINK l _Toc232410643 51用户登录模块 PAGEREF _Toc232410643 h 14 HYPERLINK l _Toc232410644 511主要函数说明 PAGEREF _Toc232410644 h 14 HYPERLINK l _Toc232410645 512 局部主要代码 PAGEREF _Toc232410645 h 15 HYPERLINK l _Toc232410646 52 发送带附件邮件模块 PAGER

15、EF _Toc232410646 h 15 HYPERLINK l _Toc232410647 521 关键函数 PAGEREF _Toc232410647 h 15 HYPERLINK l _Toc232410648 522局部主要代码 PAGEREF _Toc232410648 h 16 HYPERLINK l _Toc232410649 53收邮件模块 PAGEREF _Toc232410649 h 17 HYPERLINK l _Toc232410650 531主要函数说明 PAGEREF _Toc232410650 h 18 HYPERLINK l _Toc232410651 532

16、局部主要代码 PAGEREF _Toc232410651 h 18 HYPERLINK l _Toc232410655 6 软件运行时的界面 PAGEREF _Toc232410655 h 24 HYPERLINK l _Toc232410656 61 登录邮件效劳器 PAGEREF _Toc232410656 h 24 HYPERLINK l _Toc232410657 62 发送邮件界面 PAGEREF _Toc232410657 h 24 HYPERLINK l _Toc232410658 621 发送不带附件的邮件 PAGEREF _Toc232410658 h 25 HYPERLIN

17、K l _Toc232410659 622 发送带附件的邮件 PAGEREF _Toc232410659 h 25 HYPERLINK l _Toc232410661 7 系统测试 PAGEREF _Toc232410661 h 27 HYPERLINK l _Toc232410662 71 同一SMTP效劳器发送邮件的测试 PAGEREF _Toc232410662 h 27 HYPERLINK l _Toc232410663 711发送一封文本邮件给一个收信人 PAGEREF _Toc232410663 h 27 HYPERLINK l _Toc232410664 712 发送一封带附件的

18、邮件给一个收件人 PAGEREF _Toc232410664 h 27 HYPERLINK l _Toc232410665 72 利用不同的SMTP效劳器发送邮件的测试 PAGEREF _Toc232410665 h 28 HYPERLINK l _Toc232410666 8 结论 PAGEREF _Toc232410666 h 29 HYPERLINK l _Toc232410667 参考文献 PAGEREF _Toc232410667 h 30 HYPERLINK l _Toc232410668 致 谢 PAGEREF _Toc232410668 h 31 HYPERLINK l _To

19、c232410669 附录A PAGEREF _Toc232410669 h 31 HYPERLINK l _Toc232410670 附录B PAGEREF _Toc232410670 h 321 引言11 电子邮件介绍电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项效劳。这种非交互式的通信,加速了信息的交流及数据传送,它是个简易、快速的方法。通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种效劳,E-ma

20、i1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。电子邮件历史:1971年,美国国防部资助的阿帕网正在如火如荼的进行当中,一个非常锋利的问题出现了:参加此工程的科学家们在不同的地方做着不同的工作,但是却不能很好地分享各自的研究成果。原因很简单,因为大家使用的是不同的计算机,每个人的工作对别人来说都是没有用的。他们迫切需要一种能够借助于网络在不同的计算机之间传送数据的方法。为阿帕网工作的麻省理工学院博士Ray Tomlinson把一个可以在不同的电脑网络之间进行拷贝的软件和一个仅用于单机的通信软件进行了功能合并,命名为SNDMSG即Send Message。为了测试,

21、他使用这个软件在阿帕网上发送了第一封电子邮件,收件人是另外一台电脑上的自己。尽管这封邮件的内容连Tomlinson本人也记不起来了,但那一刻仍然具备了十足的历史意义:电子邮件诞生了。Tomlinson选择符号作为用户名与地址的间隔,因为这个符号比拟生僻,不会出现在任何一个人的名字当中,而且这个符号的读音也有着在的含义。阿帕网的科学家们以极大的热情欢送了这个石破天惊般的创新。他们天才的想法及研究成果,现在可以用最快的-快得难以觉察-速度来与同事共享了。现在他们中的许多人回想起来,都觉得阿帕网所获得的巨大成功当中,电子邮件功不可没。电子邮件的工作原理:1) 电子邮件系统是一种新型的信息系统,是通信

22、技术和计算机技术结合的产物。 电子邮件的传输是通过电子邮件简单传输协议(Simple Mail Transfer Protocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。 2) 电子邮件的根本原理,是在通信网上设立“电子信箱系统,它实际上是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱,每位用户都有属于自己的个电子信箱。并确定个用户名和用户可以自己随意修改的口令。存储空间包含存放所收信件、编辑信件以及信件存盘三局部空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、

23、转发、存档等各种操作。系统功能主要由软件实现。3) 电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后通过键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进行传递和交换,也可以与另个邮件系统进行传递和交换。收方在取信时,使用特定账号从信箱提取。12 开发背景介于当下流行的各大邮件客户端软件的除了最主要的收发信件之外,功能越来越复杂,但是我们日常工作生活中真正用到的功能却很少,很多功能尤其对于计算机知识相对缺乏的人来说,显得太过于华美且不太实用。有鉴于此,在了解smtp和pop3等底层协议的根底之上,我们开发了这个各种功能相对简单,实用的邮件客户端程序,精简掉了很多不必

24、要的功能,简化了用户的操作。13 开发环境及运行环境131 开发环境硬件:Intel(R)Pentium(R)4 CPU 2.80GHz ,1G内存80G硬盘操作系统:Microsoft Windows XP Service Pack 3 日文版 效劳器:Apache Software Foundation-Tomcat 6.0IDE:Eclipse 3.3132 运行环境Intel Pentium 2及以上处理器,128M以上内存,20G以上硬盘Microsoft Windows XP操作系统及其他系统800*600或以上的屏幕分辨率IE6.0或者其他浏览器2 软件架构及系统用例图21 系统

25、架构软件的总体架构如图2-1:欢送界面登录界面主要功能选择用户登录发送邮件接收邮件图2-1 软件架构图22 系统总体用例欢送登录发送邮件接收邮件纯文本邮件带附件邮件图2-2 系统总体用例图23 程序功能框图邮件客户端邮件信息接收邮件信息发送附加功能纯文本邮件接收带有附件的邮件接收纯文本邮件发送带有附件的邮件发送电子邮件的编写电子邮件的查询管理图2-3 程序功能图24 发送邮件类SimpleMailSender.java是实现邮件发送的核心,。封装了发送邮件的具体实现方法(sendTextMail()主要通过基于Javamail包实现邮件发送的整体过程,并也将邮件附件处理整合到一起,也是具体的s

26、mtp实现发送用的代码实现的过程。25 接收邮件类(GetMail.java)是实现邮件获取的核心,主要利用web表单上获取邮件用户的username以及password,使用connect函数连接邮件效劳器后,使用getMailInfo函数获取收件箱List信息,并在JSP界面中显示出来。3 SMTP和POP3协议的研究基于我们所要开发的是邮件收发系统,所以必须用到 SMTP协议和POP3协议而其中较为主要的是SMTPSimple Mail Transfer Protocol协议。SMTP被广泛的应用与互联网邮件的发送,该协议规定了一些根本的命令与方法从而使客户端与效劳器进行交互,以到达邮件

27、发送之目的。31 SMTP协议简介及工作原理311 SMTP简介SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议。SMTP是建立在FTP文件传输效劳上的一种邮件效劳,主要用于传输系统之间的邮件信息并提供与来信有关的通知。SMTP邮件信息为纯文本格式。文本中包含格式信息,如HTML以及客户使用指定在信息中的MIME类型,以便用适宜的方式显示邮件。如果邮件中包含附件,那么通过SMTP自动转变成适宜的文本类型。312 SMTP协议的命令SMTP分为命令头和信息头两局部,命令头主要完成客户端与效劳器端的连接、验证等,整个过

28、程由多条命令组成。由效劳器给出的相应信息一般为3位数字的相应码和相应文本,不同的效劳器回送相应码是遵守该协议的,而相应正文那么不必。SMTP命令及相应信息够是单行的,信息体那么是邮件正文局部,最后应以单独的.作为结束行。下面是客户端一些常用的SMTP指令。DATA 开始信息写作。EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表也常被禁用。HELP 查询效劳器支持什么命令,丰厚命令中的信息。HELO 向效劳器表示用户身份,返回邮件效劳器身份。MAIL FROM 在主机上初始化一个邮件的会话。RCPT TO 告诉效劳器收信人地址。NOOP 无操作,效劳器应相应OK。RESET 重置会话,当前的传

29、输被取消。VERFY 用于验证制定的用户/邮箱是否存在;由于平安方面的原因,效劳器通常禁止此命令。QUIT 终止邮件会话。313 SMTP的工作原理SMTP是工作在两种情况下:一是电子邮件从客户机传输到效劳器:二是从某一个效劳器传输到另一个效劳器。SMTP也是个请求/响应协议,命令和响应都是基于ASC文本,并以CR和LF符结束。响应包括一个表示返回状态的三位数字代码。SMTP在TCP协议25号端口监听连续请求。当然,如果是个别公司的内部邮箱端口是可变的,比方说我的程序端口32 POP3协议介绍和工作原理321 POP3 简介与命令POP3(Post Office Protocol 3)即邮局协

30、议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件效劳器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从效劳器上把邮件存储到本地主机即自己的计算机上,同时根据客户端的操作删除或保存在邮件效劳器上的邮件,而POP3效劳器那么是遵循POP3协议的接收邮件效劳器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在效劳器上的电子邮件创立一个分布式电子邮件系统有多种不同的技术支持和途径,诸如:POP邮局协议、DMSP分层式电子邮件系统协议和 IMAP因特网信息访问协议。其中,POP 协

31、议创立最早因此也最为人们了解;DMSP 具有较好的支持“无连接操作的性能,但其很大程度上仅限于单个应用程序PCMAIL;IMAP 提供了 POP 和 DMSP 的扩展集并提供对远程邮件访问的三种支持方式:离线、在线和无连接。POP 协议支持“离线邮件处理。其具体过程是:邮件发送到效劳器上,电子邮件客户端调用邮件客户机程序以连接效劳器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发效劳,将邮件从邮件效劳器端送到个人终端机器上,一般是 PC 机或 MAC。一旦邮件发送到 PC 机或 MAC 上,邮件效劳器上的邮件将会被删除。但目前的POP3邮件效劳器大都可以“只下载邮件,效劳器端并不删

32、除,也就是改良的POP3协议。POP3 并不支持对效劳器上邮件进行扩展操作,此过程由更高级的 IMAP4 完成。 POP3 使用 TCP 作为传输协议。 通过POP,客户登录到效劳器后,可以对自己的邮件进行删除,或是下载到本地。POP3的常用命令详见下表表3-1所示。表3-1 POP3常用命令命令参数状态描述USERUsername认可此命令与下面的pass命令如果都发送成功,那么将使状态转换PASSPassword认可向POP3效劳器发送指定邮箱的登录密码,进行密码验证APOPName,Digest认可Digest是MD5消息摘要STATNone处理请求效劳器发回关于邮箱统计资料(邮箱总数和

33、总字节数)UIDLMsg#处理返回邮件唯一标识符LISTMsg#处理返回邮件数量和每个邮件的大小RETRMsg#处理返回由参数标识的邮件的全部文本DELEMsg#处理效劳器将由参数标识的邮件标记为删除,由quit命令执行RSETNone处理效劳器将重置所有标记为删除的邮件,用于撤销dele命令TOPMsg#处理效劳器将回送由参数标识的邮件前n行内容,n是正整数NOOPNone处理效劳器返回一个肯定的响应,不做任何操作QUITNone更新断开与POP3的连接,同时将带有删除标记的邮件进行物理删除322 POP工作原理简介下面就让我们一起来看看电子邮件软件收取电子邮件的过程,一般我们在电子邮件软件

34、的账号属性上设置一个POP效劳器的URL比方pop.163 ,以及邮箱的账号和密码。这个在收信过程中都是用得到的。当我们按下电子邮件软件中的收取键后,电子邮件软件首先会调用DNS协议对POP效劳器进行解析IP地址,当IP地址被解析出来后,邮件程序便开始使用TCP协议连接邮件效劳器的110端口,因为POP效劳器是比拟忙的,所以在这个过程中我们相对要等比拟长的时间。当邮件程序成功地连上POP效劳器后,其先会使用USER命令将邮箱的账号传给POP效劳器,然后再使用PASS命令将邮箱的账号传给效劳器,当完成这一认证过程后,邮件程序使用STAT命令请求效劳器返回邮箱的统计资料,比方邮件总数和邮件大小等,

35、然后LIST便会列出效劳器里邮件数量。然后邮件程序就会使用RETR命令接收邮件,接收一封后便使用DELE命令将邮件效劳器中的邮件置为删除状态。当使用QUIT时,邮件效劳器便会将置为删除标志的邮件给删了。通俗地讲,邮件程序从效劳器接收邮件,其实就是一个对话过程,POP协议就是用于电子邮件的一门语言。4 RFC 822(电子邮件的标准格式)说道发送和接受邮件,我们就必须不得不提RFC822了。RFC822的全称是“ARPA因特网文本信件格式的标准(Standard for the Format of ARPA Internet Text Messages)。该标准提供了邮件内容的格式和相关语义。4

36、1 RFC 822简单介绍RFC 822规定的电子邮件内容全部由ASCII字符组成,就是通常所说的文本文件,因而标准将它称为Internet文本信件(Internet Text Messages)。从直观上看,信件非常简单,就是一系列由ASCII字符组成的文本行,每一行以回车换行符(“CRLF“,就是ASCII码的13和10)结束。从组织上看,信件内容结构分为两大局部,中间用一个空白行(只有CRLF符的行)来分隔。第一局部称为信件的头部(the header of the message),包括有关发送方、接收方、发送日期等信息。第二局部称为信件的体部(Body of the message)

37、,包括信件内容的正文文本。信头是必需的,信体是可选的,即信体可有可无。如果不存在信体,用作分隔的空白行也就不需要。在信体中,也可以有用作分隔的空白行。这样设计的信件便于进行语法分析,提取信件的根本信息。在RFC 822中规定,信件体就是一系列的向收信人表达信息的文本行,比拟简单,可以包含任意文本,并没有附加的结构。信件头那么具有比拟复杂的结构,在下一小节中详述。42 信件的头部421 信头的一般格式信头的结构比拟复杂,信头由假设干信头字段(header field)组成,这些字段为用户和程序提供了关于信件的信息。要了解信头的结构就要弄清楚各种信头字段。所有的信头字段都具有相同的语法结构,从逻辑

38、上说,包括四局部,字段名(field name),紧跟冒号: (colon),后跟字段体(field body),最后以回车换行符(CRLF)终止。即信头字段 = 字段名:字段体 CRLF字段名必须由除了冒号和空格以外的可打印USASCII字符(其值在33和126之间)组成,大多数字段的字段名称由一系列字母,数字组成,中间经常插入横线符。字段名告诉电子邮件软件如何翻译该行中剩下的内容。字段体可以包括除了CR和LF之外的任何ASCII字符。但是其中的空格,加括号的注释,引号和多行字段都比拟复杂,另外,字段体的语法和语义依赖于字段名,每个类型的字段有特定的格式。RFC 822为信件定义了一些标准字

39、段,并提供了用户自行定义非标准字段的方422 结构化字段和非结构化字段每个字段所包含的信息不同,字段大体可以分为结构化字段和非结构化字段。结构化字段有特定的格式,由语法分析程序检测。Sender 字段就是一个很好的例子,它的字段内容是信箱, 有一个离散的结构。非结构化的字段含有任意的数据,没有固定格式。例如,Subject字段可以含有任意的文字,并且没有固定格式。非结构化的字段数量较少,只有Subject、 Comments、扩展字段,非标准字段、INReply和References等。所有其它字段都是结构化的。423 信头字段的元素尽管Email信件的总体结构非常简单,但一些信头字段的结构是

40、很复杂的。下面介绍一些大多数字段共有的元素。1空白符像其它文本文件一样,空白符包括空格符(ASCII码32)和制表符Tab(ASCII码19)。此外,行末的回车换行符CRLF也应算是空白符。使用空白符可以对字段进行格式化,增加它的可读性。例如,每个字段间用CRLF来别离,在字段内用空格来分隔字段名和字段内容。在Subject后面的冒号和内容之间插入空格字符,会使字段结构更加清晰。在Email中,空白符的使用并没有固定的规那么,但应当正确地使用,仅在需要时才使用空白符,以便接收软件进行语法分析。2注解注解是由括号括起来的一系列字符,例如,(这份礼物)。注解一般用在非结构化的信头字段中,没有语法语

41、义,仅为人提供了一些附加的信息。如果在加引号的字符串中有包括在括号中的字符,那是字符串的一局部,不是注解。在解释信件的时候,会将注解忽略,可以用一个空格字符代替它们,这样就什么也不会破坏。3字段折叠每个信头字段从逻辑上说应当是一个由字段名、冒号、字段体和CRLF组成的单一的行,但为了书写与显示的方便,增加可读性,也为了符合1000/80的行字符数的限制,可以将超过80个字符的信头字段分为多行,即对于比拟长的字段,可以分割成几行,形成折叠。在结构化和非结构化字段中都允许折叠。通过在字段中某些点插入CRLF符和至少一个或多个空白字符来实现字段的折叠,第一行后面的行称为信头字段的续行。续行都以一个空

42、白符开始,这种方法称为折叠folding,例如标题字段Subject: This is a test可以表示为:Subject: This is a test反之,将一个被折叠成多行的信头字段恢复到它的单行表示的过程叫做去折叠,只要简单地移除后面跟着空格的CRLF,将折叠空白符CRLF转换成空格字符,就可以完成去折叠(unfolding)。在分析被折叠的字段的语法时,要把一个多行的折叠字段展开为一行,根据它的非折叠的形式来分析它的语法与语义。4字段大小写字段名称是不区分大小写的,所以Subject、subject或SUBJECT都一样。不过字段名称大小写有习惯的常用形式,如主题字段的大小写形式

43、通常为Subject。字段体的大小写稍微复杂点,要视情况而定。比方Subject后面的字段体,其中的大写可能就是缩写的专用名词,不能改动。424标准的信头字段下面介绍RFC822中定义的常用的标准信头字段。表4-1 RFC 822常用的标准信头字段与发信方有关的信头字段格式:From:mailbox举例:From:wang163 写信人字段。说明信件的原始创立者,给出他的电子信箱地址。创立者对信件的原始内容负责。格式:Sender:mailbox举例:From:wang163 Sender:lisina 发送者字段。说明实际提交发送这个信件的人,给出他的电子信箱地址。当发信人与写信人不一样时使

44、用。比方,秘书替经理发信。发送者对发送负责。格式:Reply-TO:mailbox举例:From:wang163 From:zhaosoho 回复字段。指定应当把回信发到哪里。如果有此字段,回信将会发给它指定的邮箱,而不会发给From字段指定的邮箱。比方,发送的是经理的信,但回信应交办公室处理。与收信方有关的信头字段格式:TO:mailbox list举例:TO:zhang263 收信人字段。指定主要收信人的邮箱地址,可以是多个邮箱地址的列表,地址中间用逗号隔开。格式:Cc:mailbox list举例:Cc:zhang863 抄送字段。指定此信件要同时发给哪些人,也称为抄送。也可以使用邮箱地

45、址列表,抄送给多个人。格式:Bcc:mailbox list密抄字段。指定此信件要同时秘密发给哪些人,也称为密件抄送。也可以使用邮箱地址列表,密抄给多个人。其它的信头字段格式:Date:date-time举例:Date:Tue,04 Dec 2004 16:18:08 +800日期字段:Date字段含有电子邮件创立的日期和时间。格式:Subject:*text举例:Subject:Hello! Subject:Re:Hello!信件主题字段。描述信件的主题。当回复信件时,通常在主题前面增加“Re:前缀,标记为该信件为回复信件:当信件被转发时,通常在主题文字前面加上“Fw:,“Fwd:这样的前缀

46、。格式:Received:from domain ;发送主机by domain ;接收主机via atom ;物理路径id msg-id ;接收者msg id接受字段。是投递信件的特定邮件效劳器所作的记录。处理邮件投递的每个效劳器必须给它处理的每个信头的前面加一个Received字段,用以描述信件到达目的地所经过的路径以及相关信息。当跟踪各个电子邮件问题时,这个信息很有帮助。举例:Received:from wang by li Tue dec 2003 12:18:02 +800格式:Comments:*text注释字段。用于把一个注解添加到信件中。格式:Resent-*举例:Resent-

47、FromResent-SenderResent-dateResent-Reply-To重发字段。当需要把收到的信件重发给另一组收信人的时候,可以保持整个原始信件不变,并简单地产生重发信件所要求的新信头字段。为防止与以前的字段相混。新添加的信头字段都加上Resent-前缀字符串,它们的语法与未加前缀的同名字段相同。格式:Message-ID:msg-id信件标识字段。用于表示一个信件唯一标识,该字段通常有Smtp效劳器生成,这个值通常是唯一的。形式根据使用的软件而定。通常左边是标识符,右边指定电脑名表4-1中的关键字说明了电子邮件借用了办公室备忘录中的概念和术语:电子邮件的头部能够包含一行说明应

48、当接收到该备忘录的接收方。象传统的办公室备忘录一样,电子邮件使用关键字Cc指明一个复写副本(carbon copy).电子邮件软件必须向Cc:后面的电子邮件地址表中的每个地址发送一份消息的副本。传统的办公室过程要求备忘录的发送方通知接收方副本是否传给其它人。有时发送方希望将备忘录的一个副本给别人而不显示出有一个副本被发送出去。一些电子邮件系统提供这样的选项,遵循传统的办公室术语,用盲复写副本(blind carbon copy)来表示。创立消息的用户在关键字Bcc后给出一个电子邮件地址表,指定一个或多个盲复写副本。虽然Bcc在发送方出现,但当信息发送时,邮件系统将它从消息中除去。每个接收方必须

49、检查头部的To和Cc行以决定信息是直接发送还是作为盲副本发送的(有些邮件系统在正文局部附加信息来告诉接收者它是一个盲副本)。其它接收者不知道有哪些用户接收到盲副本。电子邮件使用与传统的办公室备忘录相同的格式和术语:头部包括与消息有关的信息,正文包括消息文本。电子邮件头部的行说明发送方、接收方、日期、主题、应当收到副本的人的列表。1扩展字段如果想在信头中参加RFC822中没有规定的字段,就需要创立非标准字段。方法非常简单,只要在自定义的信头字段名的前面使用X-前缀。RFC822将这种方法称为扩展字段。事实上已经有许多扩展字段被广泛应用,但没有标准定义。例如:X-LOOP字段X-LOOP字段用来防

50、止邮件的循环传送。过滤或邮件列表处理程序,可以给它处理的每个信件增加一个X-LOOP字段,以后就可以根据这个字段中含有的特别值,判断一个信件是否被循环传送。如果确认邮件发生了循环,过滤或邮件列表处理程序就可以用不同的方式处理该信件。X-Mailer字段 X-Mailer字段用于指示什么样的程序产生了这个信件,它是使用最广泛的扩展字段。产生邮件的软件可以为所有发送的信件增加适宜的X-Mailer字段,该字段不仅含有软件的名称,还包含软件的版本号。(2) 普通关键字下表4-2列出了一些在因特网电子邮件中可以找到的普通关键字,以及它们的含义。表4-2 电子邮件中的关键字关键字含义From邮件发送方地

51、址对应Javamail的FromTo邮件接收方地址对应Javamail的ToCc需要抄送副本的地址对应Javamail的CcDate邮件信息创立日期 对应Message中的DateSubject邮件信息主题对应Message中的SubjectContent邮件信息内容对应Message中的ContentReply-To邮件回复地址X-Charset使用的字符集通常为ASCIIX-Mailer发送信息所使用的软件X-Sender发送方地址的副本X-Face经编码的发送方面孔的图象5 重要模块设计51用户登录模块511主要函数说明为了方便用户使用,本邮件收发系统设有两个登陆界面,即一个为本邮件管理

52、系统的登录使用界面,还有一个收取邮件的登录界面,而收取邮件的登录界面,是存在于主功能界面的二级界面,方便收取各个不同邮件效劳器的邮件,而不是由一级界面直接登录,所以第二界面登录需要验证POP3协议是否通过,并连接到当前选择的效劳器地址。假设连接成功,那么直接再JSP界面上显示收取到的该邮件效劳器的邮件。1connect()函数用于建立与POP3效劳器的连接。语法:store.connect(POPHost,user,password);connect()函数的参数说明如表5-1所示表5-1 connect()参数说明参数说明POP3HostNot null. POP3效劳器地址username

53、Not null. 用户账号passwordNot null. 用户密码2closeConnect()closeConnect()用于关闭与POP3效劳器的连接。语法: closeConnect();。512 局部主要代码处理用户登录信息的页面局部代码如下:if(username.equals(shuo.zhang)&password.equals(shuo.zhang20210203) return mapping.findForward(loginSuccess); else return mapping.findForward(loginFail);被处理一级登录界面局部代码:用户名 5

54、2 发送带附件邮件模块发送带附件的E-mail页面editMail.jsp首先对接收用户发送的收件人、邮件主题、附件、邮件内容等信息,并获取附件的路径,然后应用sendTestMail函数创立MIME邮件,最后应用Javamail中的Transport.send()函数利用smtp协议特性将邮件发送出去。下面对发送带附件的E-mail信息处理页面中所使用的关键的几个类进行介绍。521 关键类1MyAuthenticator.java说明:邮件验证类语法:public class MyAuthenticator extends AuthenticatorMyAuthenticator.java类

55、的参数说明如表5-4所示。表5-4 imap_mail_compose()参数说明参数说明usernameNot null. 需要验证的邮件效劳器用户名passwordNot null. 需要验证的邮件效劳器密码2SimpleMailSender.java类说明:发送邮件类其各种参数如下表5-5所示: 表5-5 SimpleMailSender.java参数说明参数说明toNot null.收件人地址formNot null.发件人地址subjectNot null.邮件主题messageNot null.邮件内容cc可选参数。抄送人地址bcc可选参数。密送人地址Date可选参数。发送邮件时间

56、522局部主要代码实现邮件发送类:SimpleMailSender.java代码:MyAuthenticator authenticator = null;Properties pro = mailInfo.getProperties();Multipart multipart = new MimeMultipart();if (mailInfo.isValidate() / 如果需要身份认证,那么创立一个密码验证器authenticator = new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword();/ 根据邮件会话

57、属性和密码验证器构造一个发送邮件的sessionSession sendMailSession = Session.getDefaultInstance(pro, authenticator);try / 根据session创立一个邮件消息Message mailMessage = new MimeMessage(sendMailSession);/ 创立邮件发送者地址Address from = new InternetAddress(mailInfo.getFromAddress();/ 设置邮件消息的发送者mailMessage.setFrom(from);/ 创立邮件的接收者地址,并设

58、置到邮件消息中Address to = new InternetAddress(mailInfo.getToAddress();mailMessage.setRecipient(Message.RecipientType.TO, to);/ 设置邮件消息的主题sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();mailMessage.setSubject(=?GB2312?B?+enc.encode(mailInfo.getSubject().getBytes()+?=);String mailSubject = mailInfo

59、.getSubject();try mailMessage.setSubject(MimeUtility.encodeText(mailSubject,GB2312, B); catch (UnsupportedEncodingException e1) / TODO Auto-generated catch blocke1.printStackTrace();/ 设置邮件消息发送的时间mailMessage.setSentDate(new Date();/ 设置邮件消息的主要内容String mailContent = mailInfo.getContent();/对邮件附件的操作if (m

60、ailInfo.getAttachFileNames() != null) MimeBodyPart messageBodyPart = new MimeBodyPart();DataSource source = new FileDataSource(new File(mailInfo.getAttachFileNames().toString();messageBodyPart.setDataHandler(new DataHandler(source);try messageBodyPart.setFileName(MimeUtility.encodeText(mailInfo.getA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论