APP下载

基于JavaMail的邮件管理系统的设计

2010-11-22

关键词:文件夹邮件应用程序

陈 翔

(杭州师范大学 杭州国际服务工程学院,浙江 杭州 310036)

随着网络技术及网络办公化的发展,电子邮件已经成为人们主要的通信方式之一.平常人们收发邮件主要有两种:一种是通过常用的邮件管理软件来实现,如微软的Outlook Express,国产的FoxMail;另一种是通过Web浏览器直接访问邮件服务器网站来实现收发邮件.这两种方法都比较简单、方便,但如果希望在自己开发的系统中拥有邮件的收发功能,以上两种方法就都无法实现了.该文就以在“高校毕业论文管理系统B/S版”中增加邮件管理的功能为例,提出了一种基于JavaMail的简洁、高效、可行的邮件管理系统.

1 JavaMail

图1 基于JavaMail API的应用程序体系结构图

JavaMail是Sun公司为Java开发人员提供的公共应用程序接口框架,提供了一个与平台无关、协议独立的框架,预置了一些最常用的邮件传送协议的实现方法,通过一组API来模拟邮件系统,提供E-mail的发送和接收服务.它采用接口与实现相分离,支持存取方式,消息格式、消息传送协议不同的邮件消息系统,可以简便地为应用程序增加E-mail支持,广泛应用于构建邮件和消息应用系统[1].

JavaMail API提供了几个抽象类,这些抽象类定义了组成邮件系统对象.同时这些API能够被扩展来提供新的协议和增加功能(见图1).此外API还提供了具体的子类用于应用程序的开发.最新的JavaMail已经能够完全支持POP3、IMAP和STMP等协议[2].

2 系统设计

2.1 系统结构

系统采用3层结构.第1层是客户端层,用户通过浏览器(如IE)发起浏览、检索、处理邮件等请求,并显示处理结果[3].第2层为服务器层,可以分为两个功能:一个是用于响应和处理客户端请求,通过请求处理程序与后台数据库交互,返回处理结果;另一个是通过JavaMail API与邮件服务器交互,发送和接收邮件,并对有效邮件进行解析与分类,将结果存放在数据库中,通过系统消息或短信平台通知用户[4].第3层为数据层,主要功能是存储系统和邮件信息.

2.2 邮件系统功能设计

考虑到此邮件系统是依托于“论文管理系统”,因此系统主要包含3大功能:邮件发送、邮件接收、邮件管理.邮件发送,包括编辑和发送邮件.接收邮件,包括显示邮件列表和阅读邮件.收到的邮件将直接保存到收件箱中,采用邮件列表的形式显示在页面上,每封邮件只显示主题、发件人、发信时间和收信时间等简单信息,用户可以点击链接来查看具体内容.邮件管理模块,主要实现邮件的删除,用户可以直接从数据库中删除邮件,也可以保存到本地来保存邮件.

3 系统实现

3.1 开发环境

该系统是在Windows XP操作系统下进行开发的,支持JDK5.5、JavaMail API和JAF.Web服务器采用Tomcat5.0,数据库为SQL Server 2005,邮件服务器选用是Exchange 2003.

3.2 实现方式

图2 Web邮件客户端处理过程

Web邮件客户端从实现角度分析,包括2个部分:前台和后台.前台实现JSP页面、JavaBean和Servlet.后台实现JavaMail应用程序.其处理工程如图2所示.

3.2.1 前台功能实现

系统前台每个模块都是由Pagedata、JSP页面和Servlet组成.其中,Pagedata为一个JavaBean,它类似于一个数据结构,封装了相应页面所需要传递的数据,并提供set()和get()方法设置和读取数据.JSP页面又由主页面和对应的data页面构成,data页面具体定义了主页面所需要的数据,主页面只需要将其data页面包含进来即可以访问这些数据.Servlet作为控制器对页面请求进行处理,处理完成后通过Pagedata的set()方法将数据存入JavaBean,然后控制页面跳转到的页面再通过Pagedata的get()方法读取数据并显示出来.

系统中的Servlet主要包括以下几个方面的处理.LoginServlet是对成功登录后页面的控制.当用户输入用户名和密码并且成功通过验证后,LoginServlet将控制页面跳转到menu界面,并自动取得menu中要显示的数据显示在页面上.比如取得个人文件夹的名称和个数显示在menu中.FolderServlet是对邮箱文件夹的处理.用户可以通过页面调用它来取得邮箱的所有文件夹,并可显示所有的文件夹及其包含的邮件数.ListMailServlet是对邮箱文件夹中邮件列表显示、移动邮件、删除邮件、查找邮件、过滤邮件等操作的控制.ViewMailServlet用于阅读邮件控制.当用户在页面点击某一邮件时,此Servlet将调用impl包中相应方法,将此邮件的具体内容显示在另一个JSP页面上并从当前页面跳转到此页面.WriteMailServlet用于发送邮件、保存邮件以及回复邮件控制.AddressServlet用于通讯录记录处理.

3.2.2 后台程序实现

JavaMail应用程序作为整个系统的指挥中心在后台运行.JavaMail应用程序负责实现页面提交的请求,通过Servlet来连接页面和应用程序.Servlet在处理过程中可以调用JavaMail应用程序,JavaMail应用程序也可以通过set()方法将数据传递给JavaBean.

接口RecvMailConnlnterf由类ImapConnlmpl实现用户登录认证、邮件接收、邮件解析、邮件发送、邮件列表、邮件文件夹管理等功能.下面给出部分主要功能的实现过程.

1)邮件的接收.获取邮件服务器上的用户文件夹,然后使用根文件夹的getMessage()方法获取邮件,以邮件列表的形式显示.

Public Message[] getMessages() throws MailboxFolderException{

Message[] messages=null;

if (!openFolder(Folder. READ_ONLY)) return null;

try { messages = this.rootfolder.getMessages(); //邮件获取

} catch ( MessagingException me){

throw (new MailboxFolderException(”获取邮件失败”,null));

}finally {closeFolder();}

return (messages);

}

2)邮件解析.当收到邮件后需要对邮件按格式进行解析,MessageParse类实现了邮件的解析,应用于邮件的阅读.它详细定义了邮件的主题、收件人、发件人、正文等信息.下面给出邮件解析的部分实现内容:

public class MessageParse {

private Message message;

……

}

3)邮件的发送.sendMessage方法实现了使用SMTP协议发送邮件.通过创建与邮件服务器的SMTP会话,然后在该SMTP会话上产生和发送邮件.具体实现如下所示:

public boolean sendMessage (SmtpMall msgp) {

Session session = genimtpSession); //创建会话

Message msg = msgp. createmessage (session);

try{ //发送邮件

SMTPTransport t=initSMTPTransport (session);

t. sendMessage ( msg, msg.getAllRecipients());

t. close();

return true;

} catch (MessagingException e ){

e. printStackTrace;}

return false;

}

3.3 系统运行示例

经测试邮件管理在论文系统中各功能运行正常.界面设计简洁,使用方便.系统运行时收件箱的界面如图3所示.

图3 Web邮件在系统中运行界面示例

4 结束语

基于JavaMail开发的Web邮件系统具有良好的可扩展性,能够支持各种复杂的邮件格式和数据类型.该邮件客户端系统依托于“论文管理系统”实现了用户登录、邮件发送、邮件接收、邮件管理和通讯录管理等基本功能,适用于为企业内部提供邮件服务,具有较强的应用价值.但在邮件分类和过滤方面还需要改进,有待于引进复杂的分类算法和过滤技术,并使用更灵活的分类框架,实现智能化、自动化、高效的邮件过滤与分类.

[1] Sun Microsystems, Inc. JavaMail API design specification version 1.4[EB/OL].(2008-10-22)[2008-12-30].http://java.sun.com/producta/javamail/

[2] Sun Microsystems, Inc. JavaBeans activation framework specification version 1.1[EB/OL].(2008-04-25)[2008-07-15].http://java.sun.corn/producta/javabeana/jaf/index.jsp

[3] 谢伟全,叶强,李一军.基于用户知识的中文电子邮件分类[J].计算机应用研究,2007,24(3):263-264.

[4] 钟路,刘玲,夏红筱.基于Java Mail API的Web邮件系统开发[J].武汉理工大学学报,2008,28(6):84-86.

猜你喜欢

文件夹邮件应用程序
基于James的院内邮件管理系统的实现
来自朋友的邮件
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
CMailServer
一封邮件引发的梅赛德斯反弹
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
挂在墙上的文件夹
不容忽视的空文件夹