《基于WEB的电子邮件系统邮件协议研究与系统功能实现毕业论文(28页).doc》由会员分享,可在线阅读,更多相关《基于WEB的电子邮件系统邮件协议研究与系统功能实现毕业论文(28页).doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于WEB的电子邮件系统邮件协议研究与系统功能实现毕业论文-第 26 页本科毕业论文(设计)题 目 基于WEB的电子邮件系统邮件协议研究与系统功能实现毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全
2、了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 基于WEB的电子邮件系统邮件协议研究与系统功能实现摘要:通过分析JavaMail的实现原理,采用开源框架Struts,Spring,Hibernate和面向对象的方法实现基于WEB的电子邮件系统功能。论文研究了接收邮件的和解析邮件的工作原理,并阐述了如何实现。本系统中我主要负责用户注
3、册、登陆、退出、接收站内信、读取站内信、移动站内信、删除站内信、设置其他邮箱、收取其他邮箱邮件、解析其他邮箱邮件、删除其他邮箱邮件、系统管理等功能的实现。关键词:JavaMail;Struts;Spring;Hibernate E-mail system based on web with e-mail protocol and system functions Li GuangpingComputer and Information Science Faulty, Southwest China University, Chongqing 400715, ChinaAbstract:Thro
4、ugh analysis JavaMail of the realization of the principle of open-source framework for the use of Struts, Spring, Hibernate and object-oriented method of web-based e-mail system. Research papers to receive e-mail messages and the work of analytic theory, and explained how to achieve it. This system
5、is mainly responsible for my user registration, login, exit, receiving station within the letter, read a letter station, mobile station letter letter to delete stations, set up other mail, receive mail to other e-mail, Mail resolve to delete the other E-mail messages, the system management functions
6、 to achieve.Keywords: JavaMail;Struts;Spring;Hibernate 目录第1章 引言41.1 基于WEB的电子邮件选题目的和意义41.2 基于WEB的电子邮件国内外研究现状51.3 基于WEB的电子邮件系统开发研究方法与策略51.4 基于WEB的电子邮件系统软件开发的可行性51.5 系统开发与运行环境61.5.1 系统开发环境61.5.2 软件运行环境7第2章 系统开发相关技术72.1 Struts简介72.1.1 优点:72.1.2 缺点:72.2 Spring简介82.3 Hibernate简介82.4 MVC简介92.5 JavaMail API
7、研究92.5.1 JavaMail API简介92.5.2 相关协议一览92.5.3 JavaMail安装102.5.4 JavaMail API 详解112.5.5 使用JavaMail API152.5.6 邮件认证16第3章 概要设计17第4章 详细设计与编码实现184.1 程序包的结构184.2系统的功能模块的详细设计与实现184.2.1 用户注册登录模块184.2.2 站内接收邮件模块204.2.3 其他邮箱模块234.2.4 系统管理模块28第5章 结论29第6章 参考文献30第7章 致谢32第1章 引言1.1 基于WEB的电子邮件选题目的和意义电子邮件是80年代初新起的一种基于计
8、算机网络技术,采用存储和转发方式传递交换信息的快捷,高效,廉价的电子信息业务,是计算机互联网系统中提供的一项基本服务。电子邮件作为一种现代化通信工具可以传递文字,图表,声音,电影等各类信息,其传递速度也是传统邮件所无法比拟的。其主要应用领域是电子邮件服务。用户将要发送的信息以规定的格式通过通信网络发送到收信人的信箱中,信箱实际上与通信网络相连的计算机存储器,收信人可以通过通信网络随时打开自己的信箱,看到别人发来的信件,同时可以利用自己的信箱写回信或发送信件。电子邮件服务在信息的交流,传播,检索,管理等领域的应用越来越广泛,随着电子邮件数量的增加,需求多样化,电子邮件技术的发展趋势也越趋于更细致
9、化,更复杂化。作为电子邮件的信息服务平台的邮件系统使整个电子邮件世界的核心,也是个性化增值信息服务的关键技术。电子邮件系统是在模拟邮政系统基础上,汲取电报,电传,传真技术和计算机信息技术的精华,利于处处转发的通信方式,在开放系统互联国际标准中形成为网络用于传送消息和文件提供一个可靠,异步,垮平台的机制,可以实现点到点和点到多结点上的网络用户间的通信。电子邮件系统经过几十年的发展,已经形成了完善的技术体系。电子邮件系统的发展经历了远程登陆模式,专用客服端模式,基于WEB的模式,目前正向WAP模式迁移。随着互联网的飞速发展,电子邮件的用户数量也业务量的急增,种类繁多的商业增值服务需求以及用户对服务
10、种类的智能化需求,向负载它们的电子邮件系统服务的种类,容量,技术支持,付费方式等方面提出了挑战。邮件服务系统在保留了电子邮件系统最初的收发邮件,邮件存储等基本功能的同时,融入了最新的计算机与网络技术,是电子邮件系统有了全新的改观。电子邮件已经成为人们喜爱的通信方式之一,是信息交流的重要手段之一,也是单位加强信息交流的重要手段。在我国信息化的过程中,邮件系统已经成为信息系统中必不可少的一部分。传统的邮件系统分为邮件服务器和客服端,即Client/Server(C/S)结构。用户通过邮件客户端来接受和发送邮件。近年来随着web技术的不断成熟,采用浏览器和服务器Browser/Server形式的软件
11、层出不穷,并在实际应用中得到了良好的效果。B/S结构同传统的C/S结构相比具有对客户机的低要求,较低的开发成本,方便的维护,软件的高复用性等优点。因此,系统采用B/S结构,即用户以web方式进行接收和发送邮件。1.2 基于WEB的电子邮件国内外研究现状国内很多企事业单位都有自己的邮件服务系统,免费邮箱有163,新浪等,用户对电子邮件安全性、可靠性及功能上的要求也在不断提高。因此,电子邮件服务供应商必须提供更安全、更可靠、功能更丰富的服务,才能发展业务,吸引用户,从众多竞争者中脱颖而出。如何构建高效、稳定、安全、易用、可扩展、功能丰富的电子邮件系统是众多电信运营商、ISP(Internet Se
12、rvice Provider)、ICP(Internet Content Provider)共同面临的问题。邮件服务器供应商致力于以下几个方面提高邮件服务功能:(1)增加多用户模板的功能,以满足不同用户对界面的不同喜好,如提供多种邮件webmail页面风格,提供个性化模板和多风格信纸,用户可以定义邮件系统界面等。(2)增加防病毒模块,以增加E-mail系统整体的安全性,利用邮件加密和邮件签名等方法进行邮件传送。在服务器端使用防病毒模块。将电子邮件系统向统一信息系统发展,加入最新资讯,多媒体等功能。反垃圾邮件为用户提供反垃圾邮件的多种过滤器,充分保证用户收到最低限度的垃圾邮件骚扰。1.3 基于W
13、EB的电子邮件系统开发研究方法与策略(1)查看163邮箱、qq邮箱等,研究它们的实现方式,结合自己要实现的系统找到合适的切入点。(2)本课题要求对MVC有一定的掌握,熟悉Struts、Spring、Hibernate、MySQL、Tomcat的使用,以及有较强的自学能力和熟练使用MyElipse开发环境的能力。(3)对于技术难题先查资料,找不到答案询问同学和老师,请求帮助。1.4 基于WEB的电子邮件系统软件开发的可行性(1)技术可行性本系统主要用到开源框架Struts、Spring、Hibernate,有很多的书籍和资料介绍如何使用这些框架,JAVA是目前较为流行的技术,有一定的编程基础就能
14、快速学习JAVA,所以在技术上是可行的。(2)经济可行性由于本系统是本科毕业设计的题目,这样的系统对于大多数企业来说不用花费高昂的代价去架设企业邮箱,企业可以使用我们开发的系统。我们本科生也有充裕的时间去开发这样的一个系统,只需要一台电脑和人力,不需要很大的投资。所以在经济上是可行的。 (3)操作可行性本系统采用当前最为流行的技术Struts+Spring+Hibernate框架去实现,扩展性很强,对于以后有比较好的特性也能很快速和方便的添加上去,所以在操作上是可行的。1.5 系统开发与运行环境1.5.1 系统开发环境(1)JAVA环境采用的是JDK1.6,我们要开发的系统是基于J2EE,需要
15、安装J2SE,J2SE SDK是开发任何Java系统必须安装的工具包。(2)数据库采用的是MySQL5.1,MySQL是最受欢迎的开源SQL数据库管理系统,是一个快捷的、可靠的和易于使用的数据库服务器。(3)Web服务器采用的是Tomcat6.0.18解压版本,Tomcat是Apache-Jarkarta的一个子项目,是一个免费的、开放源码的、支持JSP和Servlet技术的容器,它同时又是一个Web服务器软件。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能。Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访
16、问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。(4)集成开发工具MyEclipseMyEclipse是目前最流行的J2EE应用集成开发工具。MyEclipse一经出现就以其功能强大、插件丰富的特性赢得了认可,其主要的属性有强大的插件功能、代码重构和代码自动生成功能、快速修复错误、调整组织导入包、弹出窗口进行代码自动装配。由于功能强大,MyEclipse成为J2EE IDE领域的霸主,它能够很好地与MySQL、Tomcat进行集成。本系统中我们选用MyEclipse7.0作为开发工具。1.5.2 软件运行环境(1)软件系统环境Windows XP操作系统、Linux系统。(2)
17、硬件系统环境普通的计算机,局域网,以及能够连接上的Internet。第2章 系统开发相关技术2.1 Struts简介Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。2.1.1 优点: Struts跟Tomcat、Turbine等诸多Apache项目一样
18、,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。 Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。2.1.2 缺点: Taglib是Struts的一大优势,但对于初学者而言,却需要一个持
19、续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。虽然它现在还有不少缺点,但它是一种非常优秀的J2EE MVC实现方式。 2.2 Spring简介Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的
20、事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。2.3 Hibernate简介Hibernate顾名思义冬眠的意思,相信它的创造者的用意在于用这个工具将数据库连接持久化层冬眠,关于Hibernate网上争论很多,有人说其为工具,有人说其为框架,我相信一个人有一个人理解问题的角度,只要处理问题的方法正确就可以了。Hibernate是采用ORM映射机制的持久层开发工具,它是JAVA应用和关系数据
21、库之前的桥梁,负责JAVA对象和关系数据之间的映射。内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API,在JAVA应用中使用到Hibernate包含如下步骤。(1)创建Hibernate配置文件(2)创建持久类(3)创建对象关系映射文件(4)通过HibernateAPI编写访问数据库的代码如果想了解Hibernate或者是要学习它的人必须要首先了解两个比较重要的概念:(1)POJO:在Hibernate中理解为数据库表所对应的Domain Object,如果从子面上理解就是无格式普通JAVA对象,简单的理解就是一个不包含逻辑代码的值对象。从数据层面上看,POJO作为
22、数据实体的对象化表现形式,也成为实体。(2)ORM:ORM可以理解成一种机制也可以理解成一种模式,对象关系映射,我个人觉得如果想理解它可以和MVC比较,模型视图控制。ORM是把对象和关系数据库映射到一起,而MVC是把视图和模型控制在一起。创建Hibernate的配置文件Hibernate从中读取和数据库连接的相关信息,这个配置文件应该位于应用的classpath中,主要有两种形式XML格式和.Properteis信息文件。创建持久化类就是指需要被Hibernate持久化到数据库中的类,持久化类通常都是模型中的实体类,符合JavaBean的规范,包含一些属性,以及与之对应的get、set方法。2
23、.4 MVC简介MVC是三个单词的缩写,分别为:模型(Model),视图(View)和控制Controller)。MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。View层用于与用户的交互,通常用JSP来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。2.5 JavaMail API研究2.5.1 JavaMail API简介 JavaMail API是读取、撰写、发送电子信息的可选包。我们可用
24、它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。而不是像sendmail或者其它的邮件传输代理(Mail Transfer Agent,简称MTA)程序那样可以传送、递送、转发邮件。从另外一个角度来看,我们这些电子邮件用户日常用MUA程序来读写邮件,而MUA依赖着 MTA处理邮件的递送。 2.5.2 相关协议一览 4大信息传输协议: SMTP 、POP 、IMAP 、MIME,上面的4个协议,并不是全部,还有NNTP和其它一些协议可用于传输信息,但是由于不常用到,所以本文便不提及了。理解这4个基本
25、的协议有助于我们更好的使用JavaMail API。然而JavaMail API是被设计为与协议无关的,目前我们并不能克服这些协议的束缚。确切的说,如果我们使用的功能并不被我们选择的协议支持。(1)SMTP简单邮件传输协议定义了递送邮件的机制。(2)POPPOP是一种邮局协议,目前为第3个版本,即众所周知的POP3。POP定义了一种用户如何获得邮件的机制。它规定了每个用户使用一个单独的邮箱。大多数人在使用POP时所熟悉的功能并非都被支持,例如查看邮箱中的新邮件数量。而这个功能是微软的Outlook内建的,那么就说明微软 Outlook之类的邮件客户端软件是通过查询最近收到的邮件来计算新邮件的数
26、量来实现前面所说的功能。因此在我们使用JavaMail API时需要注意,当需要获得如前面所讲的新邮件数量之类的信息时,我们不得不自己进行计算。 (3)IMAPIMAP使用在接收信息的高级协议,目前版本为第4版,所以也被称为IMAP4。需要注意的是在使用IMAP时,邮件服务器必须支持该协议。从这个方面讲,我们并不能完全使用IMAP来替代POP,不能期待IMAP在任何地方都被支持。假如邮件服务器支持IMAP,那么我们的邮件程序将能够具有以下被IMAP所支持的特性:每个用户在服务器上可具有多个目录,这些目录能在多个用户之间共享。 其与POP相比高级之处显而易见,但是在尝试采取IMAP时,我们认识到
27、它并不是十分完美的:由于IMAP需要从其它服务器上接收新信息,将这些信息递送给用户,维护每个用户的多个目录,这都为邮件服务器带来了高负载。并且IMAP与POP的一个不同之处是POP用户在接收邮件时将从邮件服务器上下载邮件,而IMAP允许用户直接访问邮件目录,所以在邮件服务器进行备份作业时,由于每个长期使用此邮件系统的用户所用的邮件目录会占有很大的空间, 这将直接导致邮件服务器上磁盘空间暴涨。 (4)MIME MIME并不是用于传送邮件的协议,它作为多用途邮件的扩展定义了邮件内容的格式:信息格式、附件格式等等。一些RFC标准都涉及了MIME: RFC 822, RFC 2045, RFC 204
28、6, RFC 2047。(5)NNTP和其它的第三方协议 JavaMail API在设计时考虑到与第三方协议实现提供商之间的分离,我们可以很容易的添加一些第三方协议。2.5.3 JavaMail安装 (1)安装JavaMail为了使用JavaMail API,需要下载文件名格式为javamail-version.zip的文件(这个文件中包括了JavaMail实现),并将其中的mail.jar文件添加到CLASSPATH中。这个实现提供了对SMTP、IMAP4、POP3的支持。 (2) 安装JavaBeans Activation Framework在安装了JavaMail之后,我们还需要安装J
29、avaBeans Activation Framework,因为这个框架是JavaMail API所需要的。如果我们使用J2EE的话,那么我们并无需单独下载JavaMail,因为它存在于J2EE.jar中,只需将J2EE.jar加入到 CLASSPATH即可。此框架增加了对任何数据块的分类、以及对它们的处理的特性。这些特性是JavaMail API需要的。 2.5.4 JavaMail API 详解(1) JavaMail环境 AJavaMail核心类结构 在javax.mail的包下面存在着一些核心类:Session、Message、Address、Authenticator、Transpo
30、rt、Store、Folder。而且在javax.mail.internet包中还有一些常用的子类。 BSession Session类定义了基本的邮件会话,就像Http会话那样,我们进行收发邮件的工作都是基于这个会话的。Session对象利用了java.util.Properties对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。 Session类的构造方法是私有的,所以我们可以使用Session类提供的getDefaultInstance()这个静态工厂方法获得一个默认的Session对象: Properties props = new Properties();
31、 Session session = Session.getDefaultInstance(props, null); 或者使用getInstance()这个静态工厂方法获得自定义的Session: Properties props = new Properties(); Session session = Session.getInstance(props, null); CMessage 当我们建立了Session对象后,便可以被发送的构造信息体了。在这里SUN提供了Message类型来帮助开发者完成这项工作。由于 Message是一个抽象类,大多数情况下,我们使用javax.mail.i
32、nternet.MimeMessage这个子类,该类是使用MIME类 型、MIME信息头的邮箱信息。信息头只能使用US-ASCII字符,而非ASCII字符将通过编码转换为ASCII的方式使用。 为了建立一个MimeMessage对象,我们必须将Session对象作为MimeMessage构造方法的参数传入: MimeMessage message = new MimeMessage(session); 注意:对于MimeMessage类来讲存在着多种构造方法,比如使用输入流作为参数的构造方法。 在建立了MimeMessage对象后,我们需要设置它的各个part,对于MimeMessage类来说
33、,这些part就是MimePart接口。最基本的设置信息内容的方法就是通过表示信息内容和米么类型的参数调用setContent()方法: message.setContent(lgpzll, text/plain); 然而,如果我们所使用的MimeMessage中信息内容是文本的话,我们便可以直接使用setText()方法来方便的设置文本内容。 message.setText(lgpzll); 前面所讲的两种方法,对于文本信息,后者更为合适。而对于其它的一些信息类型,比如HTML信息,则要使用前者。 使用setSubject()方法对邮件设置邮件主题:message.setSubject(Fi
34、rst); DAddress 像Message一样,Address类也是一个抽象类,所以使用javax.mail.internet.InternetAddress这个子类。 通过传入代表邮件地址的字符串,我们可以建立一个邮件地址类: Address address = new InternetAddress(lgpzll); 如果要在邮件地址后面增加名字的话,可以通过传递两个参数:代表邮件地址和名字的字符串来建立一个具有邮件地址和名字的邮件地址类: Address address = new InternetAddress(lgpzll , lgpzll); 在建立了邮件地址类后,我们通过me
35、ssage的setFrom()和setReplyTo()两种方法设置邮件的发信人: message.setFrom(address); message.setReplyTo(address); 若在邮件中存在多个发信人地址,我们可用addForm()方法增加发信人: Address address =”;message.addFrom(address); 为了设置收信人,我们使用addRecipient()方法增加收信人,此方法需要使用Message.RecipientType的常量来区分收信人的类型: message.addRecipient(type, address) 下面是Messag
36、e.RecipientType的三个常量: Message.RecipientType.TO 收件人Message.RecipientType.CC 抄送人Message.RecipientType.BCC 发件人EAuthenticator 像类那样,JavaMail API通过使用授权者类(Authenticator)以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是指邮件服务器。在 javax.mail包中可以找到这个JavaMail的授权者类(Authenticator)。 在使用Authenticator这个抽象类时,我们必须采用继承该抽象类的方式,并且该继承类必须具有返
37、回 PasswordAuthentication对象(用于存储认证时要用到的用户名、密码)getPasswordAuthentication()方 法。并且要在Session中进行注册,使Session能够了解在认证时该使用哪个类。 下面代码片断中的MyAuthenticator就是一个Authenticator的子类。 Properties props = new Properties(); Authenticator auth = new MyAuthenticator(); Session session = Session.getDefaultInstance(props, auth)
38、; FTransport 在发送信息时,Transport类将被用到。这个类实现了发送信息的协议(通称为SMTP),此类是一个抽象类,我们可以使用这个类的静态方法send()来发送消息: Transport.send(message); 也可由Session获得相应协议对应的Transport实例。并通过传递用户名、密码、邮件服务器主机名等参数建立与邮件服务器的连接,并使用sendMessage()方法将信息发送,最后关闭连接: message.saveChanges(); Transport transport = session.getTransport(smtp); transport.
39、connect(host, username, password); transport.sendMessage(message, message.getAllRecipients(); transport.close(); 如果需要在发送邮件过程中监控mail命令的话,可以在发送前设置debug标志: session.setDebug(true)。 GStore和Folder 接收邮件和发送邮件很类似都要用到Session。但是在获得Session后,我们需要从Session中获取特定类型的Store,然后连接到Store,这里的Store代表了存储邮件的邮件服务器。在连接Store的过程中
40、,极有可能需要用到用户名、密码或者Authenticator。 Store store = session.getStore(pop3); store.connect(host, username, password); 在连接到Store后,一个Folder对象即目录对象将通过Store的getFolder()方法被返回,我们可从这个Folder中读取邮件信息: Folder folder = store.getFolder(INBOX); folder.open(Folder.READ_ONLY); Message message = folder.getMessages(); 首先从St
41、ore中获得INBOX这个Folder(对于POP3协议只有一个名为INBOX的Folder有效),然后以只读(Folder.READ_ONLY)的方式打开Folder,最后调用Folder的getMessages()方法得到目录中所有Message的数组。对于POP3协议只有一个名为INBOX的Folder有效,而对于IMAP协议,我们可以访问多个Folder而且SUN在设计Folder的getMessages()方法时采取了很智能的方式:首先接收新邮件列表,然后再需要的时候(比如读取邮件内容)才从邮件服务器读取邮件内容。 在读取邮件时,我们可以用Message类的getContent()方
42、法接收邮件或是writeTo()方法将邮件保存,getContent()方法只接收邮件内容(不包含邮件头),而writeTo()方法将包括邮件头。 在读取邮件内容后,关闭Folder和Store。 folder.close(boolean);store.close(); 传递给Folder.close()方法的boolean 类型参数表示是否在删除操作邮件后更新Folder。 2.5.5 使用JavaMail API (1)发送邮件 在获得了Session后,建立并填入邮件信息,然后发送它到邮件服务器。这便是使用Java Mail API发送邮件的过程,在发送邮件之前,我们需要设置SMTP服务
43、器:通过设置Properties的mail.smtp.host属性。 String host =”;String from =”;String to =”;Properties props = System.getProperties(); props.put(mail.smtp.host, host); Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(fro
44、m); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to); message.setSubject(lgpzll); message.setText(lgpzll); Transport.send(message); (2)接收邮件 读取邮件,获得session,并且连接到了邮箱的相应store,打开相应的Folder,然后得到想要的邮件,结束时关闭连接。 String host =”;String username =”;String password =”;Properties props = new
45、 Properties(); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore(pop3); store.connect(host, username, password); Folder folder = store.getFolder(INBOX); folder.open(Folder.READ_ONLY); Message message = folder.getMessages(); folder.close(false); store.close();
46、2.5.6 邮件认证 我们在此取代了直接使用邮件服务器主机名、用户名、密码这三个字符串作为连接到POP3 Store的方式,使用存储了邮件服务器主机名信息的属性文件,并在获得Session时传入自定义的Authenticator实例: Properties props = System.getProperties();props.put(mail.pop3.host, pop3Server);Session mailsession = Session.getDefaultInstance(props,new CheckPassword(userName, password);Store sto
47、re = mailsession.getStore(pop3);store.connect(pop3Server, userName, password);CheckPassword类继承了抽象类Authenticator,并且通过重载Authenticator类的 getPasswordAuthentication()方法返回PasswordAuthentication类对象。而 getPasswordAuthentication()方法的参数param是以逗号分割的用户名、密码组成的字符串。 package com.mail.othermail;import javax.mail.Authenticator;import javax.mail.PasswordAuthe