JavaMail技术完成邮件功能的设计与开发

JavaMail技术完成邮件功能的设计与开发
JavaMail技术完成邮件功能的设计与开发

邢台学院

本科学年论文(设计)

题目JavaMail技术完成邮件功能的设计与开发

计算机科学学院计算机科学与技术专业09级计本二班

学号:

姓名:王伟

指导教师:

成绩: _____________

完成时间:2013 年 4 月

目录

一、绪论 (1)

(一)电子邮件介绍 (1)

(二)基于javamail的邮件收发系统的开发背景和开发意义 (2)

1、开发背景 (2)

2、开发意义 (2)

二、E-Mail相关协议和Javamail API介绍 (2)

(一) E-Mail相关协议介绍 (2)

1、SMTP协议简介 (3)

2、POP协议简介 (3)

3、IMAP协议简介 (3)

(二) JavaMail API (3)

1、 JavaMail API简介 (3)

2、JavaMail API核心类 (4)

三、系统分析 (5)

(一)系统设计的基本原理 (5)

1、电子邮件工作原理 (5)

2、 mail工作流程 (5)

(二)系统设计的目的与原则 (6)

(三)系统功能分析 (6)

四、系统设计 (7)

(一)功能结构设计 (7)

(二)系统工作流程简图 (7)

五、系统功能与实现 (8)

(一)系统开发语言及工具简介 (8)

1、系统开发语言介绍 (8)

2、系统开发工具介绍 (8)

(二)系统开发软件安装 (8)

1、JAVA环境的安装与配置 (8)

2、Javamail 的安装 (9)

(三)用户登录设计及实现 (9)

(四)邮件发送设计及实现 (10)

(五)邮件接收设计及实现 (12)

(六) JavaMail邮件系统的测试运行 (15)

六、结论 (15)

七、参考文献 (16)

JavaMail功能分析及设计

作者:王伟

【摘要】随着互联网技术及网络办公化的发展,电子邮件成为人们主要的通

信方式之一,越来越多的人开始使用它,而且用它的人数势必会继续增加。基于JavaMail的邮件收发系统就利用Javamail开发包的高级应用和E-Mail的相关协议开发的。它集邮件的撰写、发送和接收功能与一体。并且支持附件的发送和接收以及其它一些附加功能的实现,它容易掌握和使用。整个系统功能流畅,操作简便、界面友好、实用灵活,保证了用户之间的交流能够更加地方便和快捷。论文首先对电子邮件的意义做了一个总体的介绍,接着论述了系统的开发背景和开发意义,并对系统的研究内容及设计目标进行分析。然后对系统设计的基本原理进行了详细介绍。最后,通过对系统需要完成的功能和可行性进行分析,确定了系统的功能模块,详述了各模块的实现方法并对方法做了完整的实现。

【关键字】JavaMail;SMTP;POP3;收发邮件

Title The Functional Analysis and Implementation of JavaMail Abstract With the development of Internet technology and network-oriented office,E-mail

become one of the main means of communication. More and more people start using it, and the number of people using it is bound to continue to increase. Therefore, based on JavaMail sending and receiving e-mail system on the use of advanced development kit Javamail applications and E-Mail related to protocol is developed. It combines e-mail to write, send and receive functions and integration. And support for sending and receiving attachments, as well as other additional features implementation. It is easy to grasp and use. The entire system functions are smoothly, simple, friendly and flexible,guarantee communication between users to be more convenient and expedient.In this paper,The E-mail significance is introduced generally, the development background and meaning is dicussed in detial. and systematic research content and design goals is analysed. Then the basic principles of system design were introduced minutely. Finally,based on the analysis of the function and feasibility of the system is deteminded , and details the method of each module of implementation and complete implements it.

Key words JavaMail;SMTP;POP3;Send and receive e-mail

一、绪论

(一)电子邮件介绍

电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换

的通信方式,是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送。通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。

电子邮件不是一种“终端到终端”的服务,是被称为“存贮转发式”服务。这正是电子信箱系统的核心,利用存贮转发可进行非实时通信,属异步通信方式。即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在,仍可将邮件立刻送到对方的信箱内,且存储在对方的电子邮箱中。接收者可在他认为方便的时候读取信件,不受时空限制。因为电子邮件是通过邮件服务器(mai1 server)来传递档的。通常mail server是执行多任务操作系统UNIX的计算机,它提供24小时的电子邮件服务,用户只要向 mail server管理人员申请—个信箱账号,就可使用这项快速的邮件服务。

(二)基于javamail的邮件收发系统的开发背景和开发意义

1、开发背景

随着网络的逐渐普及现在的人们对于电子邮件已经不再陌生了,自从电子邮件进入人们的生活以来,人们对传统的信件已经不再依赖,它的可靠、快速、方便、灵活、廉价、内容丰富等特点都在使我们更加喜欢和接受它。

从实际应用上讲,目前全球网页访问量中有66%以上与电子邮件相关。通过电子邮件,用户可以与远地用户进行迅速、方便的联系,而且费用低廉。同时,电子邮件可以以嵌入方式传送多种类型的信息,如文本、图像、声音、视频等。还可以利用数字签名与认证、PGP 加密等技术来保证电子邮件传递的安全性与可靠性。正是由于电子邮件系统的这些良好特性,越来越多的用户采用基于电子邮件系统的应用,诸如电子杂志订阅系统、客户订货系统、新产品发布系统等等。在商务界,电子邮件已经或正在取代信件、文件以至电话而成为最常用的通信联络方式。现在,电子邮件已经成为学术界、商业界最为流行的一种通信方式,和国外进行学术交流更少不了电子邮件。

近年来,电子邮件飞速发展,可以看到在比较专业、服务比较全面周到的网站基本上都有免费电子邮件服务。他们大部分都是通过各种软件进行开发的。而在当今很流行的Java 技术中就包含有JavaMail API,它提供了大量的类和接口来与网络邮件传输。因此,本次毕业设计就是利用Java技术来实现简单的邮件发送和接收的功能。

2、开发意义

随着当今信息技术的飞速发展,计算机的应用日渐普及,各种邮件系统已经成为人与人之间传递信息必不可少的工具。但是当前流行的各大邮件客户端软件的除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其是对于那些计算机知识相对缺乏的人来说,更加显得太过于华丽而不太实用。有鉴于此,在了解了E-mail 相关协议以及JavaMail编程技术的基础上,开发了这个各种功能相对简单而且实用的基于JavaMail的邮件收发系统,简化了很多复杂的和不必要的功能。所以整个系统功能流畅,从操作简便、界面友好、灵活实用的要求出发,使用户之间的交流能够更加的方便和快捷。

二、E-Mail相关协议和Javamail API介绍

(一) E-Mail相关协议介绍

1、SMTP协议简介

SMTP 是一种提供可靠且有效电子邮件传输的协议。SMTP 是建模在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。

SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。SMTP 重要特性之一是其能跨越网络传输邮件,即SMTP 邮件中继。通常,一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP 传输层协议组成。使用 SMTP,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。

2、POP协议简介

POP是一种邮局协议,目前为第3个版本,即众所周知的POP3。POP定义了一种用户如何获得邮件的机制。它规定了每个用户使用一个单独的邮箱。大多数人在使用POP时所熟悉的功能并非都被支持。例如查看邮箱中的新邮件数量,而这个功能是微软的Outlook内建的,那么就说明微软Outlook之类的邮件客户端软件是通过查询最近收到的邮件来计算新邮件的数量来实现前面所说的功能。因此在我们使用JavaMail API时需要注意,当需要获得如前面所讲的新邮件数量之类的信息时,我们不得不自己进行计算。

3、IMAP协议简介

IMAP使用在接收信息的高级协议,目前版本为第4版,所以也被称为IMAP4。需要注意的是在使用IMAP时,邮件服务器必须支持该协议。假如邮件服务器支持IMAP,那么邮件程序将能够具有以下被IMAP所支持的特性:每个用户在服务器上可具有多个目录,这些目录能在多个用户之间共享。

其与POP相比高级之处显而易见,但是在尝试采取IMAP时,认识到它并不是十分完美的:由于IMAP需要从其它服务器上接收新信息,将这些信息递送给用户,维护每个用户的多个目录,这都为邮件服务器带来了高负载。并且IMAP与POP的一个不同之处是POP用户在接收邮件时将从邮件服务器上下载邮件,而IMAP允许用户直接访问邮件目录,所以在邮件服务器进行备份作业时,由于每个长期使用此邮件系统的用户所用的邮件目录会占有很大的空间,这将直接导致邮件服务器上磁盘空间暴涨。

(二) JavaMail API

1、 JavaMail API简介

JavaMail API是一种可选的、能用于读取、编写和发送电子消息的包(标准扩展)。可使用这种包创建邮件用户代理(Mail User Agent ,MUA)类型的程序。要使用JavaMail 组件来收发邮件,要先了解JavaMail组件的API的,如图1-1所示,图中显示了JavaMail 组件包中主要的接口和类,以及它们之间的关系。通过JavaMail组件包,开发人员主要可以完成如下的客户端的开发功能:

◆创建一份邮件。JavaMail组件使用Part接口和Message类来定义一封邮件,使用JAF

中的DataHandler来将邮件打包处理;

◆创建一个Session对象,以进行用户鉴别,控制对邮箱的存取、发送操作;

◆向一个收件箱列表中的邮箱发送邮件。

◆从某个邮箱中收取邮件。

图 1-1 JavaMail组件包中主要的接口和类

2、JavaMail API核心类

JavaMail API的核心类主要包括:

◆Session类,用户要收发邮件必须先建立邮件会话Session类的对象,这个对象可

用来创建邮件对象、实现邮件对象中数据的封装,还可指定邮件服务器认证的客户

端属性,它的主要方法有:getDefaultInstance()、getInstance()、

getProperties()、getStore()、getTransport();

◆InternetAddress类,这个类代表邮件地址对象,声明如下:public class

InternetAddress extends Addressimplements https://www.360docs.net/doc/c318195995.html,ng.Cloneable,它是继承

自抽象类javax.mail.Address,其构造函数用来建立InternetAddress类的对象,调用方法:InternetAddresss(String address),其中,参数address是构造对象

的E-mail地址,如yanxia5849@https://www.360docs.net/doc/c318195995.html,,yanxia5849是笔者在https://www.360docs.net/doc/c318195995.html,的邮箱用

户名,@是邮件分隔符,https://www.360docs.net/doc/c318195995.html,是邮件服务器;getAddress()用来得到E-mail地

址;

◆MineMessage类,这个类代表MIME风格的邮件,它实现了Message抽象类和

MinePart接口,其声明为:public class MineMessage extends Messageimplements

MinePart,它的构造函数为:MineMessage(Session session),主要方法有:

getAllPecipients()、getContent()、getContentType()、getFrom()、

getSubject()、isMimeType();

◆Transport类,Transport是邮件发送类,类的层次结构为javax.mail.Transport,

可有Session类对象的getTransport()方法生成。其主要方法有:connect()、

sendMessage();

◆Store类,Store类可用来从邮件服务器上接收邮件,其类的层次结构为

javax.mail.Store,Store类最常用的方法就是getFolder(),此方法得到指定名

称的邮件服务器文件夹中的文件,调用方法StoreObjectName.getFolder(String

name);

Folder类,Folder类是邮件文件夹类,类的层次结构为javax.mail.Folder,其主要方法有:exists()、fetch()、getMessage()。

三、系统分析

(一)系统设计的基本原理

1、电子邮件工作原理

本系统实现的是电子邮件的收发,其系统设计的基本原理就是电子邮件的工作原理。

电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。电子邮件的传输是通过电子邮件简单传输协议(Simple Mail Transfer Protocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。

电子邮件的基本原理,是在通信网上设立“电子信箱系统”,它实际上是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有属于自己的—个电子信箱。并确定—个用户名和用户可以自己随意修改的口令。存储空间包含存放所收信件、编辑信件以及信件存盘三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统功能主要由软件实现。

电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后通过键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进行传递和交换,也可以与另—个邮件系统进行传递和交换。收方在取信时,使用特定账号从信箱提取。

2、 mail工作流程

电子邮件与普通邮件有类似的地方,发信者注明收件人的姓名与地址(即邮件地址),发送方服务器把邮件传到收件方服务器,收件方服务器再把邮件发到收件人的邮箱中。下面以126和sina这两个电子邮局为例来说明电子邮件的传输过程和工作原理。它们之间的邮件收发过程即mail工作流程原理图如图1-2所示。

图1-2 mail工作流程原理图

邮件在传输的过程中是要遵守一定的规则-----协议。POP3/IMAP协议是用来从自己邮箱服务器里接收自己的邮件;SMTP 协议是用来发送邮件的。在客户端中用Javamail.jar 包来编写客户端程序。服务器端根据协议的需求来实现功能。

从上图中可以看到邮件的转发的一个过程,当两个邮箱地址属于不同的服务器的时候,邮件服务器会根据@后面的域名来转发邮件。

(二)系统设计的目的与原则

本次学年论文设计所要完成的,是一个通过代理服务器实现邮件收发功能的系统,该系统功能类似于OUTLOOK,但是由于水平和时间的关系,只是实现了OUTLOOK的部分功能。只需要在任意的客户端上访问代理服务器就可以实现邮件收发功能。

通过本次课题的学习和研究掌握了基本的Java编程技能,更实践了自我的动手能力。同时认识到在信息化高速发展的今天,高效、快速、方便的邮件收发系统将得到越来越多的人关注和使用,它将给人们带来更方便快捷的生活。

(三)系统功能分析

邮件客户端必须具有以下功能:

◆用户信息的配置功能。完成用户身份的登陆认证和邮件服务器的设置;

◆简单邮件发送功能。在邮件发送界面完成无附件邮件的发送;

◆有附件邮件发送功能。在邮件发送界面完成带有附件邮件的发送;

◆邮件保存功能。完成邮件的编辑以后在发送邮件之前点击保存按钮就可以实现邮件的保

存功能;

◆邮件接收功能。在邮件的接收界面完成邮件接收功能,可以接收无附件邮件的邮件。件

和带有附件;

◆邮件查阅功能。在邮件接收界面点击界面树型控件中需要查看的邮件在界面右边就可以

显示所查看邮件的内容。

为实现以上五种邮件客户端功能,需要建立以下八个类:

应用程序类(Application类)是整个工程的入口类,它定义了全局唯一的main()函数,Java VM会从main()函数开始执行。在Application类的构造函数中,创建主框架类的对象,并对主框架类的对象的尺寸和位置进行调整,最后将主框架居中显示;

邮件客户端主框架类,命名为MainFrame。该类提供邮件客户端的人机交互界面。在MainFrame类的构造函数中,完成主框架添加控件的操作,并设置主框架的大小,以及布局管理器等。除界面相关的工作外,主框架类还需完成对用户配置的初始化工作和用户配置的保存工作;

自定义标签类,命名为TabbedPane,其父类为JtabbedPane。该类为用户配置、邮件发送和邮件接收3个操作界面提供模板;

属性配置类,命名为ConfigPanel,其父类为Jpanel,该类提供用户信息的加载、保存、序列化等操作。ConfigPanel类作为TabbedPane类的页面,被添加在主框架上,完成人机交互工作。在ConfigPanel类中,当用户单击Confirm按钮时,将用户设置的信息保存在ConfigPanel类中,当用户单击Clear按钮时,则清除用户输入;

属性结构类,该类用来保存用户的属性。由于在整个工程的各个模块,比如邮件的发送,邮件的接收等,都需要对使用用户的帐户和密码进行身份验证,并且根据用户设定的

SMTP服务器和POP3服务器进行邮件的发送和接收,因此,必须定义一个数据结构来保存用户的设置;

邮件处理类,命名为MessageProcess,该类必须实现Serializable接口。

MessageProcess类是非常重要的类,该类用于邮件接收过程。

四、系统设计

(一)功能结构设计

邮件客户端具有以下功能:

●用户信息的配置功能;

●简单邮件发送功能;

●带附件邮件发送功能;

●邮件保存功能;

●邮件接收功能;

●邮件查阅功能。

系统功能结构设计图如图1-3所示:

图1-3系统功能结构设计图

(二)系统工作流程简图

本JavaMail工程有六个JSP和一个JavaBean,其系统工作流程图如图1-4所示:

图1-4系统工作流程图

五、系统功能与实现

(一)系统开发语言及工具简介

1、系统开发语言介绍

本系统运用了Java开发语言,Java是一种简单的,面象对象的,分布式的,解释的,键壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。有跨平台、面向对象、体系结构中立、健全、小巧、多线程、安全、可扩展、快速等特点。

2、系统开发工具介绍

开发工具使用了Eclipse,Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成--Eclipse Platform、JDT、CDT和PDE。

(二)系统开发软件安装

1、JAVA环境的安装与配置

本次开发环境为:JDK1.6+Tomcat6.0+Eclipse3.3,JDK是从事java开发的基础开发工具与开发环境;Tomcat是做java web开发时常用的一款轻量级web服务中间件软件;

Eclipse是一种被java程序员广泛使用的集成开发工具。下载Java的JDK开发包,然后安装,安装完成后,配置环境变量,右击我的电脑--属性--高级--环境变量,先新建一个变量名:java_home,变量值是JDK安装的路径;一般都是C:\Program Files\Java\jdk1.6.0_07,然后再建个变量名字:classpath变量值是:

java_home\lib\tools.jar,然后在变量名中双击Path,在变量值前面加上:%java_home%\bin;然后点击确定及配置完成,然后进入开始--命令--输入cmd--接着输入javac 然后就出现了配置的信息;安装tomcat,安装版的tomcat安装完之后tomcat的服务就能够启动的了,需要配置TOMCAT_HOME,还需要查看一下安装程序是不是把tomcat服务注册成为windows的启动服务,需要到“服务”里查看,如果有这个选项就把它设置为手动启动,并且先停止这个服务;最后进行Eclipse的安装,安装完后整个开发环境就配置完毕了。

2、Javamail 的安装

JavaMail 对SMTP、POP3、IMAP提供了支持,封装了电子邮件功能中的邮件对象、发送功能、身份认证、接收等。JavaMail API 1.3.2 Release版本可从在Sun公司的网站上可以免费下载,下载后用解压缩软件解压后可得到mail.jar文件,把这个文件拷贝到Tomcat安装目录下的lib子目录中则所有Web应用均可用;如果只需要当前web应用可用则可拷贝到当前web应用的“WEB-INF/lib”目录中,如果没有此目录,则建一个。

(三)用户登录设计及实现

用户登录界面设计简单,有用户名和密码两个文本框,其登录中实现判断的核心代码为:if(rs.next()){

session.setAttribute("admin", "true");

response.sendRedirect("AdminIndex.jsp");

}else{

%>

账户和密码错误,请重新输入

本界面设计中用了一个表单,其代码为:

用户名:
用户密码:

用户登录界面设计及实现如图1-5所示:

图 1-5 用户登录界面

(四)邮件发送设计及实现

邮件发送包括两个JSP页面,第一个JSP页面writeMail.jsp用于输入要发送的邮件标题、邮件内容以及邮件接收者;另一个JSP页面sendMail.jsp用于接收输入的数据并发送邮件。writeMail.jsp中主要用到了一个表单,包括收信人地址和主题还有信件内容三项及其提交按钮,邮件发送界面及运行结果如图1-6所示:

图 1-6邮件发送界面

在这个界面中输入接收邮件的邮箱、邮件的主题以及邮件的正文内容,点击“发送”按钮,即会将数据提交到sendMail.jsp页面。sendMail.jsp首先从表单中接收邮件信息,然后建立邮件会话,再由邮件会话新建一个消息对象,最后设置邮件并发送邮件。其核心代码实现如下:

try{

//从html表单中接收邮件信息

String to_mail=request.getParameter("to");

String to_title=request.getParameter("title");

String to_content=request.getParameter("content");

//建立邮件会话

Properties props=new Properties();

props.put("mail.smtp.host","https://www.360docs.net/doc/c318195995.html,");//存储发送邮件服务器的信息

props.put("mail.smtp.auth","true");//同时通过验证

Session s=Session.getInstance(props);//根据属性新建一个邮件会话

s.setDebug(true);

//由邮件会话新建一个消息对象

MimeMessage message=new MimeMessage(s);

//设置邮件

InternetAddress from=new InternetAddress("yanxia5849@https://www.360docs.net/doc/c318195995.html,"); message.setFrom(from);//设置发件人

InternetAddress to=new InternetAddress(to_mail);

message.setRecipient(Message.RecipientType.TO,to);//设置收件人,并设置其接收类型为TO

message.setSubject(to_title);//设置主题

message.setText(to_content);//设置信件内容

message.setSentDate(new Date());//设置发信时间

//发送邮件

message.saveChanges();//存储邮件信息

Transport transport=s.getTransport("smtp");

//以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码

transport.connect("https://www.360docs.net/doc/c318195995.html,","yanxia5849","8807698");

transport.sendMessage(message,message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址

transport.close();

%>

邮件发送成功!

<%

}catch(MessagingException e){

out.println("邮件发送失败!");

}

%>

如果邮件发送成功则显示发送邮件并提示成功如图1-7所示:

图 1-7发送邮件并提示成功

如果邮件发送过程出现故障,则提示邮件发送失败,界面提示如图1-8:

图1-8发送邮件并提示失败

(五)邮件接收设计及实现

从邮件服务器上收取邮件,一般的先是得到邮件列表再显示出来,然后又用户决定查看哪封邮件的内容,再点击邮件的标题即可打开此封邮件的内容。mailList.jsp是用来显示收件箱中的邮件列表,其代码如下:

<%

Session mailsession=Session.getInstance(System.getProperties(),null); mailsession.setDebug(false);

//protocol为连接协议,IMAP或是POP

Store store=mailsession.getStore("pop3");

//mailhost主机,user为用户名,passwd为密码

store.connect("https://www.360docs.net/doc/c318195995.html,","yanxia5849","8807698");

Folder folder = store.getFolder("INBOX");

folder.open(Folder.READ_ONLY);

Message messages[]=folder.getMessages();

out.println("yanxia5849@https://www.360docs.net/doc/c318195995.html,邮箱的收件箱中共有"+messages.length+"封邮件:
");

//输出每封邮件的相关信息

for(int i=0;i

out.print("

");

out.print("

");

String from

=MailUtil.decodeText(messages[i].getFrom()[0].toString());

InternetAddress ia = new InternetAddress(from);

out.print("

");

out.print("

");

out.print("

");

}folder.close(true);

store.close();

%>

以下是tougao-email@https://www.360docs.net/doc/c318195995.html,邮箱中收件箱中的内容

序号标题发送者地址邮件大小发送时间
"+(i+1)+"

href='viewMail.jsp?id="+((MimeMessage)(messages[i])).getMessageID()+" '>"+messages[i].getSubject()+"

"+ia.getAddress()+""+messages[i].getSize()+""+messages[i].getSentDate()+"

显示邮件收件箱中的邮件列表界面如图1-9所示:

图 1-9显示邮件收件箱中的邮件列表

接下来点击标题连接进入viewMail.jsp页面,显示点击的邮件具体内容。其实现的核心代码为:

<%

String messageId=request.getParameter("id");

Session mailsession=Session.getInstance(System.getProperties(),null); mailsession.setDebug(false);

//protocol为连接协议,IMAP或是POP

Store store=mailsession.getStore("pop3");

//mailhost主机,user为用户名,passwd为密码

store.connect("https://www.360docs.net/doc/c318195995.html,","yanxia5849","8807698");

Folder folder = store.getFolder("INBOX");

folder.open(Folder.READ_ONLY);

Message messages[]=folder.getMessages();

int i=0;

for(;i

if(((MimeMessage)(messages[i])).getMessageID().equals(messageId)) break;

%>

邮件标题:<%=messages[i].getSubject()%>
发送者邮箱:

<%String from

=MailUtil.decodeText(messages[i].getFrom()[0].toString());

InternetAddress ia = new InternetAddress(from);

out.print(ia.getAddress());%>

邮件内容:

<%

Object content =messages[i].getContent();

if(content instanceof String)

out.print(content);

if(content instanceof Multipart)

MailUtil.dumpMultipart((Multipart)content,out);

%>

比如点击Re:论文答辩,则进入邮件的具体内容部分,其具体内容显示界面如图1-10所示:

图1-10查看邮件的具体内容

程序中用到了一个JavaBean,名为MailUtil.java,这个JavaBean的代码如下:

package mail;

import java.io.IOException;

import java.io.InputStream;

import java.io.UnsupportedEncodingException;

import javax.mail.MessagingException;

import javax.mail.BodyPart;

import javax.mail.Multipart;

import javax.mail.internet.MimeUtility;

import javax.servlet.jsp.JspWriter;

public class MailUtil {

//对编码作转换

public static String decodeText(String text) throws UnsupportedEncodingException{ if(text==null) return null;

if (text.startsWith("=?GB")||text.startsWith("=?gb"))

text = MimeUtility.decodeText(text);

else

text = new String(text.getBytes("ISO8859_1"));

return text;

}

//输出邮件内容

public static void dumpMultipart(Multipart mmp,JspWriter out) throws MessagingException, IOException{

for(int pc=0;pc

BodyPart bp = mmp.getBodyPart(pc);

Object content = bp.getContent();

if(content instanceof String){

out.print(content);

}

else

if(content instanceof Multipart)

dumpMultipart((Multipart)content,out);

else

if(content instanceof InputStream)

out.print("邮件有附件:"+decodeText(bp.getFileName()));

}

}

}

这个JavaBean中有2个方法,第一个方法用于作编码转换,以正确显示发邮件邮箱的地址;第二个方法用于递归输出邮件的内容,方法传入了2个参数,第1个是要输出的邮件内容,第2个是JSP页面的out对象。邮件主题很容易获得,通过Part接口将BodyPart 和MimeBodyPart构建一个信息,当解码邮件时,必须使用Message方法处理Parts的层次,处理MultiPart信息的过程相对比较复杂。MultiPart意味着Part由多个部分组成,每一部分的内容必须接收到。在显示邮件列表页面要向某个邮件具体内容的页面传递一个标识以唯一标识邮件,而MimeMessage类有是Message类的子类,因此可以使用如下方法:((MimeMessage)(message[i])).getMessageID()。

(六) JavaMail邮件系统的测试运行

JavaMail邮件系统测试过程是在JDK1.6+Tomcat6.0+Eclipse3.3环境下进行了。首先是在Eclipese下启动Tomcat服务器,并将本工程部署到服务器上,然后在内置浏览器或者IE中输入网址http://localhost:8080/JavaMail/Login.jsp,回车后就会显示登录界面,当输入用户名和密码后点击提交按钮就会转向writeMail.jsp,在写完邮件提交后会转向sendMail.jsp,如果发送成功会提示成功信息,如果失败则提示失败信息。查看邮件列表是mailList.jsp页面,当转向该页面后会显示所以邮件列表,当点击某一份具体邮件时会转向viewMail.jsp显示该邮件的具体信息包括有标题、发送者、内容,以上测试成功说明JavaMail邮件系统运行正常。

六、结论

JavaMail提供给开发者处理电子邮件相关的编程接口,它是Sun发布的用来处理email 的API,它可以方便地执行一些常用的邮件传输。JavaMail的邮件收发系统利用了Javamail 开发包的高级应用和E-Mail的相关协议,主要用于帮助用户将邮件发送给SMTP服务器和从

POP3邮件服务器读取用户的电子邮件。它集邮件的撰写、发送和接收功能与一体。

本次JavaMail邮件系统开发过程中首先对开发的意义、背景、目标、内容做了总体的介绍,然后进行了系统分析和系统设计,最后在JDK1.6+Tomcat6.0+Eclipse3.3环境下对设计功能进行了实现并对其进行了测试运行。

系统还存在有不足之处,首先是登录界面没有进行校验功能,应该写一个JavaBean实现对登录界面传过来的数据校验过滤的功能,如果校验成功则才能实现登录并写邮件;其次是JavaBean写的比较少,很多数据处理在JSP页面中,应该多写JavaBean,将处理逻辑都放在其中,这样就将业务逻辑和数据处理分开,使系统实现简单而且安全;在显示邮件列表页面中,如果邮件比较多会出现页面很长的现象,应该在这个页面中加入分页的技术,这样邮件多的时候就可以分页显示邮件列表。

七、参考文献

【1】张孝祥. Java邮件开发详解 [M]. 北京:电子工业出版社,2007-05-01.

【2】邓子云 .Java Web轻量级应用开发:JSP+Struts+Hibernate+Spring实例精解[M] 北京:电子电工出版社,2008.7 ISBN 978-7-121-06840-9

【3】https://www.360docs.net/doc/c318195995.html,/Article/info_1873.html

【4】https://www.360docs.net/doc/c318195995.html,/Article/sj/java/200907/688.html

【5】吴晓东 .Java程序设计基础[M]. 北京:清华大学出版社,2002-5.

【6】孙卫琴。Java面向对象编程[M].北京:电子工业出版社,ISBN:7-121-02538-8,2006-7

本科生学年论文(设计)成绩表

JavaMail API简介

javamail:JavaMail API简介 疯狂代码 https://www.360docs.net/doc/c318195995.html,/ ?:http:/https://www.360docs.net/doc/c318195995.html,/Java/Article7029.html 转载自:https://www.360docs.net/doc/c318195995.html, JavaMailAPI是种可选、能用于读取、编写和发送电子消息包(标准扩展)您可使用这种包创建邮件用户代理(MailUserAgentMUA)类型它类似于Eudora、Pine及MicrosoftOutlook这些邮件其主要目不是像发送邮件或其他邮件传输代理(MailTransferAgentMTA)类型那样用于传输、发送和转发消息换句话说用户可以和MUA类型交互以阅读和撰写电子邮件MUA依靠MTA处理实际发送任务 JavaMailAPI设计是为收发信息提供和协议无关访问方式是把该API划分成两个部分: ?该API第个部分是本课程重点基本上是如何发送和接收独立于提供/协议消息 ?第 2个部分则使用特定协议语言如:SMTP、POP、IMAP和NNTP如果要让JavaMailAPI和服务器通信就需要为的提供协议由于Sun公司对特定协议提供有充分介绍用户可以免费获取所以本课程没有介绍创建特定协议提供内容 复习相关协议 在学习JavaMailAPI深层知识的前让我们回过头来看看在该API中使用协议,本质上有4种人们常用协议: ?SMTP ?POP ?IMAP ?MIME 您还需要了解NNTP及其他些协议理解这些协议基本原理有助于您理解如何使用JavaMailAPI而该API设计要和协议无关所以不能克服这些基础协议限制如果选用协议不支持某种功能那么JavaMailAPI也无法在其上添加这种功能(正如您会儿就会看到在操作POP协议时常常会碰到这种问题) SMTP 简单邮件传输协议(SMTP)是用于传送电子邮件机制在JavaMailAPI环境中您基于JavaMail将和您公司或Internet服务提供商(ISP)SMTP服务器通信该SMTP服务器将会把消息转发给用作接收消息SMTP服务器最后用户可通过POP或IMAP协议获取该消息由于支持身份验证所以不需要SMTP服务器是种开放转发器但需要确保SMTP服务器配置正确JavaMailAPI中没有集成用于处理诸如配置服务器以转发消息或添加/删除电子邮件帐户这类任务功能 POP POP含义是邮局协议当前版本为3也称作POP3该协议是在RFC1939中定义POP是Internet上大多数人用来接收邮件机制它为每个用户每个邮箱定义支持这是它所做全部工作也是大多数问题根源在使用POP协议时人们熟悉很多功能如查看收到了多少新邮件消息功能POP根本不支持这些功能都内置到诸如Eudora或MicrosoftOutlook的类邮件中能为您记住接收上封邮件以及计算有多少新邮件这类信息因此使用JavaMailAPI时如果想获取这类信息将需要由自己进行计算 IMAP

基于Javamail的邮件收取类(可直接使用)

package com.neusoft.mail; import javax.mail.*; import java.io.*; import java.text.*; import java.util.*; import java.util.Enumeration; public class GetMail { String POP3Host=""; //POP3服?器 String mailServerPort="110";//POP3服?器端口号String user=""; //登?POP3服?器的?号 String password=""; //登?POP3服?器的密? boolean validate = true;//是否需要身??? Session session = null; Folder folder = null; Store store = null; //无参数的?造函数 public GetMail() {} public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPOP3Host() { return POP3Host; } public void setPOP3Host(String host) { POP3Host = host;

} public String mailServerPort() { return mailServerPort; } public void mailServerPort(String mailServerPort) { this.mailServerPort = mailServerPort; } public String getUser() { return user; } public void setUser(String user) { https://www.360docs.net/doc/c318195995.html,er = user; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } //?接?件服?器 public void connect() throws Exception{ //?建一个授????象 POP3Auth auth = new POP3Auth(); auth.setAccount(user,password); //取得一个Session?象 Properties prop=new Properties(); prop.put("mail.pop3.host",POP3Host); prop.put("mail.pop3.port", this.mailServerPort); prop.put("mail.pop3.auth", validate ? "true" : "false"); session = Session.getDefaultInstance(prop,auth); //取得一个Store?象

JavaMail

package com.mail.tool; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.text.DateFormat; import java.util.Date; import java.util.Properties; import java.util.StringTokenizer; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Flags; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Part; import javax.mail.Session; import javax.mail.Store; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import com.mail.bean.MailBean; import https://www.360docs.net/doc/c318195995.html,erBean; import com.mail.dao.ReceiveDao; import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility; public class MailManager { public int getUnreadCount(UserBean user){//读取未读邮件的个数,POP3没有此功能int count=0; try{ Properties props=new Properties();//创建一个空的配置 Session mailSession = Session.getInstance(props);//获取一个Session的实例

基于Javamail的邮件收发系统-使用说明

基于Javamail的邮件收发系统使用说明书 基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:Javamail 开发工具:Eclipse3.4 运行环境:PC上需安装JDK1.6,且正确配置环境变量。 系统基本功能如下: (1) 收取并显示POP3邮件服务器上指定邮箱的邮件; (2) 使用SMTP邮件服务器发送邮件; (3) 邮件附件的发送与接受; (4) 删除邮件; 具体操作步骤如下: 1、打开javamailsystem文件夹,找到javamail.jar可执行文件,双击该执行文件,即可打开 Javamail邮件收发系统客户端软件。进入该系统后,首先选择“POP3/SMTP设置”按钮,对收发邮件所需的邮件服务器主机、收发邮件账号及密码信息进行设置。 图1-1邮件客户端主界面 设置举例如下:

POP3属性 POP3服务器:https://www.360docs.net/doc/c318195995.html,(或https://www.360docs.net/doc/c318195995.html,或https://www.360docs.net/doc/c318195995.html,) Email地址:shinning191@https://www.360docs.net/doc/c318195995.html,(ceshi2009ok@https://www.360docs.net/doc/c318195995.html,、qiufeng006@https://www.360docs.net/doc/c318195995.html,) 账户名:shinning191(ceshi2009ok、qiufeng006) 密码:6857191(123456、28912786) SMTP属性 SMTP服务器:https://www.360docs.net/doc/c318195995.html,(或https://www.360docs.net/doc/c318195995.html,或https://www.360docs.net/doc/c318195995.html,) Email地址:shinning191@https://www.360docs.net/doc/c318195995.html,(ceshi2009ok@https://www.360docs.net/doc/c318195995.html,\qiufeng006@https://www.360docs.net/doc/c318195995.html,) 账户名:shinning191(ceshi2009ok、qiufeng006) 密码:6857191(123456、28912786) 在对SMTP/POP3进行设置的时候,由于系统的缺陷,需要先对POP3进行属性设置,然后确定关闭该对话框;重新打开属性设置对话框,对SMTP进行属性设置,确定。这样便可以正确设置完邮件服务器的属性。 此系统对上述设置的信息具有存储功能,在这里,我们采用属性文件的形式存储SMT P 和POP3邮件服务器属性设置。相关属性值分别保存在pop3.properties和smtp.properties文

基于javamail的电子邮件收发系统-学位论文

目录 第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.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邮件开发

第二章邮件传输协议 SMTP协议:简单邮件传输协议,它定义了邮件客户端于SMTP服务器之间,以及两台SMTP服务器之间的通信规则。SMTP协议的通信双方采用一问一答的命令/响应形式进行对话。 命令: Ehlo Auth Mailfrom: Rcptto: Data Quit 我们来看一个例子: 因为我们的用户名和密码,是需要加密的,所以我们先把用户名和密码加密,程序如下:import java.io.*; import sun.misc.BASE64Encoder; public class Base64Util { public static void main(String [] args) throws IOException{ System.out.print("请输入用户名:"); 更多的内容https://www.360docs.net/doc/c318195995.html,/en/ BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String username=in.readLine(); System.out.print("请输入密码:"); String password=in.readLine(); BASE64Encoder encoder=new BASE64Encoder(); System.out.println("编码后的用户名:"+encoder.encode(username.getBytes())); System.out.println("编码后的密码为:"+encoder.encode(password.getBytes())); } } 输入用户名和密码以后,会把加密后的用户名和密码给出来,然后我们打开命令提示符: 这个指令的意思,就是连接到https://www.360docs.net/doc/c318195995.html, 25是段口号。 返回220,表示成功连接。

基于Javamail的邮件收发系统-任务书

信息科学与工程学院 09 届本科生毕业设计(论文)任务书 学院信息科学与工程 学院 专业 计算机科学与技术 (师范) 班级 学号学生姓名指导教师 一、论文题目 基于Javamail的邮件收发系统 二、内容和要求 1.总体目标及性能(参数)要求 (1)系统功能基本完善。 (2)系统具有良好的用户界面。 (3)系统具有较好的人机交互性、易于使用。 (4)系统可靠、稳定,具有一定的应用价值。 2.研究内容及拟采用的技术路线 ●研究内容: (1)邮件服务器的工作原理。 (2)DNS服务器的工作原理。 (3)SMTP、POP3、MIME协议。 (4)设计并实现基于Javamail的邮件收发系统,要求系统具有邮件接收、发送等基本功能。 ●采用的技术路线: (1)开发工具采用Java+JavaMail API。 (2)数据库采用MySQL或SQL Server。

3.参考文献(10篇以上) [1] Java邮件开发详解。张孝祥。电子工业出版社,2007。 [2] Java高级程序设计。王路群主编。中国水利水电出版社, 2006 。 [3] Java课程设计。黄明, 梁旭, 周绍斌编著。电子工业出版社, 2006。 [4] Java开发与应用教程。王吴迪, 赵枫朝等编著。电子工业出版社, 2006。 [5] Java程序设计大学教程。刘艺等编著。机械工业出版社, 2006。 [6] Java数据库高级编程宝典。陈天河编著。电子工业出版社, 2005。 [7] Java程序设计与应用开发。於东军等编著。清华大学出版社, 2005。 [8] Java语言程序设计实训。赵海廷主编。武汉大学出版社, 2005。 [9] Java program design。Cohoon, James P.,Davidson, Jack W。McGraw-Hill Higher Education, 2004。 [10] Thinking in Java。Eckel, Bruce。Prentice Hall, c2000。 [11] Learning Java。Niemeyer, Patrick.,Knudsen, Jonathan。O'Reilly, 2000。

如何用javamail定时发送邮件

如何用javamail定时发送邮件 例如:我想在3天后的中午12:00发送给别人邮件 还有就是每天的中午12点给别人发送邮件,而且这些个邮件地址是从一个jsp传来的 例如今天给a@https://www.360docs.net/doc/c318195995.html,发,当执行过jsp后,jsp输入的是b@https://www.360docs.net/doc/c318195995.html,,以后就给b@https://www.360docs.net/doc/c318195995.html,发 而且jsp传过来的邮件地址数目是多个的,每天需要给多人在固定一时间内发邮件 定时触发器 有许多开源项目 Timer + 多线程 我在这里使用的Java计时器框架是由Java开发人员Tom White构建的一个简单通用的计划框架,以用于执行任意复杂的计划任务,他使我们实现灵活的计划策略成为可能。Java计时器框架的本身在这里不作过多的介绍,详细信息在IBM developerWorks中国网站。 我们主要讨论如何利用Java计时器框架在Solaris平台来实现邮件的定时发送、JavaMail发送邮件的实现以及在Solaris平台上如何以后台方式运行整个邮件定时发送的应用。 下载本文的源代码,参考具体实现。 1.1 形成schedule.jar包 schedule.jar包中的目录结构如下: 我们将数据库的连接、日志、邮件和计划框架的通用类形成一个与具体应用要求无关的schedule.jar包。利用javac将编译生成的目标class文件存在当前目录的classes文件夹下,然后通过jar -cvf schedule.jar ./*命令生成schedule.jar包。 1.1.1 Oracle数据库连接的建立 位于db目录下,通过thin方式建立与Oracle的数据库连接,具体的实现参见《J2EE应用中与Oracle数据库的连接》一文。 1.1.2 日志 以后台方式定时运行的应用应特别注意日志的功能,因为只有通过分析详细的日志信息才能准确掌握应用的执行情况。在logs目录下为Logs.java文件,代码如下: package com.j2ee.logs; import java.io.*; import java.util.*; import java.text.SimpleDateFormat;

JavaMail发送邮件实例-给多人发送、抄送

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun 发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。 虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail 文件。 JavaMail包中用于处理电子邮件的核心类是: Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。 关键技术: 1、MimeMessage的setRecipients方法设置邮件的收件人,其中 Message.RecipientType.TO常量表示收件人类型是邮件接收者, https://www.360docs.net/doc/c318195995.html,常量表示收件人类型是抄送者, Message.RecipientType.BCC常量表示收件人的类型是密送着。 2、在调用MimeMessage的setRecipients方法时,除了可以指定收件人的类型外,还可以传入一个数组,指定多个收件人的地址。 SourceCode: import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart;

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

课程设计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上能够发送邮件的

JavaMail技术

JavaMail技术 1.JavaMail介绍 现如今,使用email发送邮件非常普遍和常见,平时公司内部交流,网站上信息通知,注册时激活验证等地方都在使用邮件,Java也有关于发送和接收邮件技术封装。Java中提供的技术即就是要给大家介绍的JavaMail技术。 2.邮件协议 2.1.邮件服务器简介 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器和接收邮件的服务器。 发送邮件的服务器使用发送协议,现在常用的是SMTP协议。所以,通常发邮件的服务器也称为SMTP服务器。 接收邮件的服务器使用接收协议,现在常用的是POP3协议或IMAP协议,所以通常也被称为POP3或IMAP服务器。 目前经常见到的服务器为SMTP和POP3服务器。 例如:在注册了126的邮箱之后,它的发邮件服务器为https://www.360docs.net/doc/c318195995.html,:25,而收邮件服务器则为https://www.360docs.net/doc/c318195995.html,:110.(冒号后面的为端口号)。 当然,发邮件服务器和收邮件服务器也可能是同一台主机,但端口号一定不相同。默认发邮件服务器的端口为25,收邮件的端口为110。 2.2.邮件收/发协议 SMTP协议-发邮件协议 全称为Simple Mail Transfer Protocol(简单邮件传输协议),它定义了邮件客户端软件与SMTP 服务器之间、以及两台SMTP服务器之间的通讯规则。端口一般为25. POP3协议-收邮件协议

全称为Post Office Protocol(邮局协议),它定义了邮件客户端软件与POP3服务器的通讯规则。端口一般为110. IMAP协议-对POP3的扩展 全称为Internet Message Access Protocal(Internet消息访问协议),它是对POP3协议的一种扩展,定义了邮件客户端软件与IMAP服务器的通讯规则。 3.Apache的JavaMail使用 邮件客户端的主要任务是向邮件服务器发送邮件,以及接收来自邮件服务器的邮件。Sun公司制定了一套API,它封装了邮件通信的各种协议。为Java开发者提供了收发电子邮件的公共接口。但是由于Sun公司提供的那些接口比较麻烦,Apache对sun公司的技术进行了封装,使用Apache的mail技术,可以简单方便的发送邮件。 3.1.下载javamail的jar包 下载地址:https://www.360docs.net/doc/c318195995.html,/proper/commons-email/download_email.cgi 解压jar包,在项目中导入jar包。

基于JavaMailAPI的Web邮件系统开发

第28卷 第6期 2006年6月武 汉 理 工 大 学 学 报JOURNAL OF WUHAN UNIVERSITY OF TECHNOLOGY Vol.28 No.6 Jun.2006 基于JavaMail API 的Web 邮件系统开发 钟 珞,刘 玲,夏红霞 (武汉理工大学计算机科学与技术学院,武汉430070) 摘 要: E mail 通信在Java 服务器编程中占有非常重要的地位。阐述了Web 邮件系统所涉及的几个协议,对J2EE JavaM ail A PI 的结构框架和核心类进行了介绍,描述了系统架构,并给出了其中发送邮件功能的详细设计过程。Java M ail 结合JSP 的结构化特性,易于实现灵活高效、方便移植的Web 邮件应用程序。 关键词: JavaM ail AP I; 电子邮件; 邮件发送 中图分类号: T N 915.04文献标志码: A 文章编号:1671 4431(2006)06 0084 03 Development Research of Web Mail System Based on JavaMail API Z H ON G L uo ,LI U L ing,XIA H ong x ia (School o f Computer Science and T echnology ,Wuhan U niv ersity of T echno logy,Wuhan 430070,China) Abstract: E mail is the most important and ex tensive applicat ion of I nternet,it stands a v er y important position in Java server pr ogramming.T his paper first ex patiated on some protocols come down to the Web mail system,and then introduced the architecture and core classes of J2EE JavaM ail A PI.After that,the article presented the system framew ork and t he detailed de sign pr ocess of mail sending.In co nclusion,it can easily implement flexible,high effective and transplantable W eb mail applica tions with JavaM ail and structured JSP. Key words: JavaM ail API ; E mail; mail sending 收稿日期:2006 03 23. 基金项目:教育部高校行动计划智能科学与技术(2004XD 03).作者简介:钟 珞(1957 ),男,教授,博士生导师.E mail:liuling com 随着互联网的发展,人们使用最多的服务之一就是电子邮件,用户最初只能通过Outlook 、Foxm ail 等客户端软件来收发自己的邮件。随着Web 邮箱的面世,其快捷、方便的优点吸引了众多的网络用户。 对一般的电子邮件使用者来说,E mail 非常简单地执行邮件传输,但是对于编程人员来讲E mail 的打包、传输、发送和接收是很复杂的。这要涉及到很多协议,主要有发送电子邮件的SMT P 协议、用来接收电子邮件的POP3协议和Internet 邮件访问协议IMAP 以及多用途Internet 邮件扩充协议M IM E 。JavaM ail 就是Sun 发布的用来处理这些问题的统一的API,JavaMail 是J2EE 的核心部分,它定义一组抽象类和接口,通过Java 应用程序支持邮件系统。它封装了电子邮件的基本协议,编程人员可以不用自己去处理那些复杂的协议了。JavaMail API 可以使用在客户端也可以使用在服务器端。 1 相关邮件协议 简单邮件传输协议(SMT P)是为了保证电子邮件的可靠和高效传送,它通过TCP/IP 网络把消息从一个邮件服务器移动到其它邮件服务器(见图1)。SM TP 是Internet 电子邮件服务的基础,在TCP 上,它使用端口25进行传输,但是个简单的子协议,除传输邮件外不能完成诸如差错检测等其它功能,这些功能由POP 和IMAP 等高级邮件协议负责完成。邮局协议(POP)是个地位牢固的开放邮件标准。它依靠SMTP

基于JavaMail的邮件客户端程序的设计与实现

网络通讯与安全 电脑知识与技术 电脑知识与技术 1引言 一个完整的邮件系统由邮件客户端程序和邮件服务器程序组成,实现邮件系统所使用的邮件协议为MIME、SMTP、POP3和IMAP4协议,其中MIME协议用于定义邮件格式,SMTP协议用于传输邮件,POP3和IMAP4协议用于从邮件服务器接收邮件。 邮件客户端程序主要实现用户和邮件服务器的交互,用户使用它可以创建、发送、阅读、管理自己的邮件。目前流行的邮件客户端程序很多,比如大家熟悉OutLookExpress等。本文将介绍一种基于JavaMail的邮件客户端程序的设计与实现方法。 2JavaMail JavaMail是sun公司提供的用来开发邮件系统的软件包,它属于标准扩展API,仅包含在JDK1.4以上的版本和J2EE以上的 版本中 。JavaMail的体系结构如图1所示。 JavaMailAPI封装在mail.jar包中,其核心由抽象类层与Internet邮件类层两个部分组成(见图1)。其 中,抽象类层定义了与平台、底层协议无关的Email操作界面,其相关的类与接口定义在javax.mail包中;而Internet邮件类层则用于支持InternetMIME(RFC822)的标准,相关的类与接口被封装在javax.mail. internet包中。 此外,为了支持MIME标准,实现对多种媒体邮件格式的支持,JavaMailAPI中使用了JavaBeans的技术,需要Java激活框架的支持,因此,进行邮件系统开发时还需要用到JAFAPI,该API封装在activation.jar包中,相关的类与接口定义在javax.acti-vation包中。 3系统设计 JavaMailAPI使邮件的发送与接收得到大大的简化。本文所开发的邮件客户端程序是在JBuilder9环境下实现的,JBuilder9自带JDK1.4.1版本,不需额外下载mail.jar邮件开发包和activa-tion.jar激活框架包。主要实现如下基本功能: (1)收取并显示POP3邮件服务器上指定邮箱的邮件;(2)使用SMTP邮件服务器发送邮件;(3)邮件附件的发送与接收;(4)删除邮件。 邮件客户端程序的功能界面如图2所示。 图2邮件客户端程序的功能界面4系统技术实现 3.1环境配置和界面搭建 在JBuilder9中,创建工程后,首先为工程添加JavaMail和JavaBeansActivationFrameWork开发包,然后使用swing图形工具包搭建各个程序界面,并在使用JavaMailAPI的类文件中导入相关的API包,即在程序的开头添加下面的语句: importjavax.mail.*;importjavax.internet.*;importjavax.activation.*; 3.2设置邮件服务器参数的实现 用户在收发邮件时,需要设置邮件服务器主机、 收发邮件帐户及密码等信息。因此系统提供对上述信息的设置与存储的功能,这里,我们采用属性文件的形式存储SMTP和POP3邮件服务器属性设置。其文件名为smtpPop3.properties,位于工程的根目录下,可使用java.uitl.Properties类的setProperty()方法和getProperty()方法对属性文件中的属性内容进行存取。本系统smtpPop3.properties文件的内容格式如下: smtpPop3.pop3host=pop3邮件服务器地址(如pop3.sina.com.cn)smtpPop3.smtphost=smtp邮件服务器地址(如smtp.sina.com.cn)smtpPop3.address=收发邮件帐户(如xyz@sina.com)smtpPop3.username=用户名(如xyz)smtpPop3.password=密码(如797989)3.3创建与发送邮件功能的实现 发送邮件的基本过程为:点击主界面中的【创建邮件】 按钮后,弹出新邮件编辑窗体,在该窗体中编辑新邮件,选择邮件附件 收稿日期:2006-04-04 作者简介:杨淑萍(1963-),女,山西怀仁人,讲师,硕士,研究方向,电子商务技术;聂哲(1970-),男,湖南益阳人,副教授,硕士,研究方向,电子商务技术。 基于JavaMail的邮件客户端程序的设计与实现 杨淑萍,聂哲 (深圳职业技术学院软件工程系,广东深圳518055) 摘要:本文简述了JavaMail及其结构,详细阐述了使用JavaMail开发邮件客户端程序的方法,并给出了主要的实现代码,为邮件应用程序的进一步开发提供了基础。 关键词:JavaMail;邮件客户端程序;SMTP;POP3中图分类号:TP311文献标识码:A文章编号:1009-3044(2006)20-0106-03 DesignandImplementationofMailClientProgramBasedonJavaMail YANGShu-ping,NIEZhe (DepartmentofComputerSoftware,ShenzhenPolytechnic,Shenzhen518055,China) Abstract:ThispaperintroducesJavaMailandexpoundsthedevelopingmethodofmailclientprogramwithJavaMailindetail,Italsogivesoutthemainimplementcodesofmailclientprogrameandprovidesbaseofdevelopingmailapplication. Keywords:avaMail;mailclientprogram;SMPT;POP3 图1JavaMial体系结构106

基于Javamail的邮件收发系统论文

基于JavaMail的邮件收发系统 摘要 电子邮件在当今社会中扮演了一个很重要的角色。越来越多的人在使用它。而且用它的人数势必会继续增加。本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP协议和POP协议从底层进行开发,利用JavaMail API为收发邮件提供与协议无关的访问。SMTP(简单邮件传输协议)是专门用来发送邮件的。POP (邮局协议)是专门用于接收邮件的。JavaMail API是一种可选的、能用于读取、编写和发送电子消息的标准扩展包。 本文主要可分为四个部分。第一部分介绍了Javamail邮件系统的意义和现状。第二部分具体介绍了几种相关协议和Javamail API。第三部分主要介绍了系统的开发工具JA V A语言、Eclipse及其安装过程与配置方法。第四部分详细阐述了Javamail邮件收发系统的实现过程。 关键词:SMTP,POP,JA V AMAIL,邮件收发

MAIL SYSTEM BASED ON JAVAMAIL ABSTRACT E-Mail play a very important role in modern times. More and more people are using it, and the number of it will larger and larger. This paper introduced the javamail system's development background, analyzed and compared some existing maturity Email system at home and abroad , summarized their advantages and disadvantages, studied deeply with the javamail technology , proposed and designed out the mail system based on javamail. This system used POP protocol and SMTP protocol to develop from the bottom, used JavaMail API to provide the visit which has nothing to do with the agreement for send and receive email. SMTP (Simple Mail Transfer Protocol) is designed to send a message. POP (Post Office Protocol) is designed to receive mail. JavaMail API is an standard expansion package which is optional, can be used to read, write and send electronic messages. This paper can be divided into four parts. The first part introduced javamail email system's significance and status. The second part introduced several related agreements and JavaMail API. The third part mainly introduced system's development tools JA V A language , Eclipse and their installation process and configuration method. The fourth part detailed javamail email system's realization process. Keywords:SMTP, POP, JA V AMAIL, Email to send and receive

java收取和发送邮件 ssl

Java 收取和发送邮件+SSL 这里使用Gmail 邮箱测试1. 收取邮件 [java] view plaincopypackage lius.javamail.ssl; import java.io.UnsupportedEncodingException; import java.security.*; import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeUtility; /** * 用于收 取Gmail邮件* @author Winter Lau */ public class GmailFetch { public static void main(String argv[]) throws Exception { Security.addProvider(new https://www.360docs.net/doc/c318195995.html,.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "https://www.360docs.net/doc/c318195995.html,.ssl.SSLSocketFactory"; // Get a Properties object Properties props = System.getProperties(); props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY); props.setProperty("mail.pop3.socketFactory.fallback", "false"); props.setProperty("mail.pop3.port", "995"); props.setProperty("mail.pop3.socketFactory.port", "995"); //以下步骤跟一般的JavaMail操作相同Session session = Session.getDefaultInstance(props,null); //

相关主题
相关文档
最新文档