基于JSF的电子邮件系统的设计与实现

时间:2022-02-11 06:34:50

基于JSF的电子邮件系统的设计与实现

摘要:论文介绍的电子邮件系统,以MyEclipse作为开发平台,基于JSF。系统包括以下八个大模块:登陆模块;邮件发送模块;邮件接收模块;邮件阅读模块;邮件处理模块;邮件退出模块;邮件回复模块;邮件转寄模块。该系统主要是采用SMTP和POP协议来达到收发邮件的。同时增加了一般邮件系统所没有的国际化功能,适于不同语言的人使用,让系统变得全球化。

关键词:JSF;国际化;SMTP;POP3

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)24-5433-03

自从电子邮件进入人们的生活,人们对传统的信件已经不再依赖,它的可靠、快速、方便、灵活、廉价、内容丰富等特点都使人们更加喜欢和接受它。近年来,电子邮件飞速发展,可以看到在比较专业、服务比较全面周到的网站基本上都有免费电子邮件服务。它们大部分都是通过各种软件进行开发的。而在当今很流行的Java技术中就包含有JavaMail API,它提供了大量的类和接口实现网络邮件传输。本次设计就是利用Java技术来实现邮件发送和接收的功能,以开发一个属于自己的邮件系统。

1 相关技术与开发平台

整个系统开发完全采用MVC模式,开发平台为Java平台,以Tomcat为JSF引擎和Web服务器。JSF是基于Java 的Web 应用开发领域里提供了的一个可重用、可扩展、基于组件、工具友好的服务器端UI 框架。在支持JSF 的RAD开发工具中,人们可以像使用Visual Studio. NET一样方便快捷地构建Web 用户界面,大大降低了利用Java技术实现Web 用户界面的难度,提高了开发效率。

2 系统功能分析

用户要进入系统首先必须登录系统,登录后即可阅读邮件、回复邮件、撰写新邮件、转发邮件等。不仅可以发送文本,还可以发送附件等信息。

该系统的总体用例图如图2所示。

3 系统部分功能的实现与程序的编制

系统主要有功能模块分别为:登录模块、邮件发送模块、邮件接收模块、邮件阅读模块、邮件回复模块、邮件转寄模块和退出模块。系统使用JavaMail的核心类来实现这些功能。

3.1 邮件发送模块

进入系统后的界面,在这个界面当中显示了系统的邮件列表,其界面如图3所示。

在介绍发送模块之前先说下写邮件,在这需要使用MailBasisBean,因为发送模块要调用这个类,也只有写好信才能发送。在MailBasisBean中设置了主题subject,发信人,收信人,暗送,抄送,回复,附件的属性。同时还有添加附件的功能,只要附件的名字不为空,通过 mbp.setContent设置好内容,可以添加附件其代码如下所示:

MimeBodyPart mbp = new MimeBodyPart();

mbp.setContent(upFile.getBytes(), upFile.getContentType());

mbp.setDataHandler(new DataHandler(new

ByteArrayDataSource(upFile.getBytes(),

upFile.getContentType())));

attachments.add(mbp);

写好邮件,就是发送了,在这个过程中用到的类是Transport。若发送安全连接的信息直接用Send()发送信息,Transport.send(mm);

3.2 邮件处理模块

这个模块当中主要是删除邮件,首先判断邮件列表里是否有邮件,若没邮件则返回列表,有列表就可以选择性的删除,邮件前面打个勾就可以删除想要删除的信件,如果想全删,就直接全选邮件就可以全部删除了。下面是其主要代码:

FacesContext facesContext = FacesContext.getCurrentInstance();

FolderWrapperBean folderWrapper;

int messageNumbersOfSelectedDisplayMessages[];

MailboxConnection mailboxConnection;

String currentMailboxFolder;

folderWrapper = (FolderWrapperBean)getManagedBeanByName("folderWrapperBean");

messageNumbersOfSelectedDisplayMessages = folderWrapper.getMessageNumbersOfSelectedDisplayMessages();

if(messageNumbersOfSelectedDisplayMessages.length < 1)

mailboxConnection = getMailboxConnection();

currentMailboxFolder = getCurrentMailboxFolder();

mailboxConnection.login(currentMailboxFolder);

mailboxConnection.setMultipleDeletedFlags(messageNumbersOfSelectedDisplayMessages);

SessionContainerBean sessionContainer = (SessionContainerBean)getManagedBeanByName("sessionContainerBean");

sessionContainer.setRenewEnvelopes(true);

assureCorrectOffset(folderWrapper,sessionContainer,essageNumbersOfSelectedDisplayMessages);

3.3 邮件回复模块

回复模块就是调用发送模块,在这可以回给一个人,也可以回给多个人,具体实现的代码如下:

MailBasisBean mailBasis = (MailBasisBean)getManagedBeanByName("mailBasisBean");

DisplayMessageBean displayMessage = (DisplayMessageBean)getManagedBeanByName("displayMessageBean");

ReactionMailBasisAssembler.refurbishGivenResponseMailBasis(mailBasis, displayMessage, responseToAll);

回复的信件在邮箱列表当中会显示出来那个“Re:”标上如图5所示:

以上是一个简单的邮件系统的实现过程,通过使用Java技术中的JavaMail API,很容易开发出一个属于自己的电子邮件系统。

参考文献:

[1] Norah Jones.SMTP[J]. OVERSEAS ENGLISH,2003(6):34-35.

[2] 滁州,马金虎.编写基于SMTP网络应用程序[J].电脑爱好者,2003(5):92-94.

[3] 滁州,马金虎.编写基于POP3网络应用程序[J].电脑爱好者,2003(6):92-94.

[4] 代继红.SMTP认证机制模块化设计及实现[J].中南民族大学学报,2005(4).

[5] 胡安廷.简单实现中文邮件[J].中国计算机报,2004(11).

上一篇:免遭报复的智慧/尼泊尔奇特婚俗:岳父给女婿洗... 下一篇:RAMS管理分析系统的构建与实现