JamesJavamail构建邮件服务实现.docx
《JamesJavamail构建邮件服务实现.docx》由会员分享,可在线阅读,更多相关《JamesJavamail构建邮件服务实现.docx(43页珍藏版)》请在冰豆网上搜索。
JamesJavamail构建邮件服务实现
James+Javamail构建服务
(一)
关键字:
james
James+Javamail构建服务
本文描述如何使用James搭建具备一定过滤、操作功能的服务器,以与使用Javamail实现对James服务器的收发功能。
1关于James与Javamail
ApacheJames(JavaApacheMailEnterpriseServer)是Apache组织的子项目之一,完全采用纯Java技术开发,实现了SMTP、POP3与NNTP等多种相关协议。
James是一个应用平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。
James提供了比较完善的配置方案,尤其是关于容存储和用户信息存储部分,可以选择在文件、数据库或其他介质中保存。
James性能稳定、可配置性强,还是开源项目,所有源代码不存在问题,因此,James在项目中的应用日益广泛。
JavamailAPI是一个用于阅读、编写和发送电子消息的可选包(标准扩展),可以用来建立基于标准的电子客户机,它支持各种因特网协议,包括:
SMTP、POP、IMAP、MIME、NNTP、S/MIME与其它协议。
在本文档中,我们使用James2.3.1+Javamail1.4.1作为介绍蓝本。
2James服务器快速入门
我们可以从ApacheJames的官方站点下载到我们所需要的James服务器与源码
James服务器(ZIP版)下载地址:
apache.mirror.phpchina./james/server/binaries/james-binary-2.3.1.zip
James源码下载地址:
apache.mirror.phpchina./james/server/source/james-2.3.1-src.zip
其他版本的服务器与源码可到官方下载页面下载:
james.apache.org/download.cgi
2.1启动James
第一步:
将james-binary-2.3.1.zip解压到纯英文目录下
第二步:
运行bin目录下的run.bat(在运行之前请确保您的Java环境变量已配置成功,否则将提示运行失败)
显示以下容表示James服务器已启动成功:
服务器启动成功后,将自动在apps目录下根据james.sar文件生成相应的James发布文件包,我们后面讨论的配置文件config.xml即存在于此发布文件包中。
2.2用Telnet管理用户
用cmd进入MS-DOS,输入telnetlocalhost4555(注:
localhost是服务器名,4555是管理端口,可在\apps\james\SAR-INF\config.xml文件中配置,在此我们使用其默认配置)
然后输入用户名和密码(在配置文件config.xml中,默认为用户名:
root密码:
root)
出现如下信息说明登陆成功:
登陆成功后,我们就可以开始对用户信息进行增、删、查、改等操作了。
常用的用户信息操作命令参见下表:
?
Currentlyimplementedcommands:
常用实现命令
?
help displaythishelp 显示帮助信息
?
listusers displayexistingaccounts 显示现有账户
?
countusers displaythenumberofexistingaccounts显示现有账户数量
?
adduser[username][password] addanewuser 添加一个新用户
?
verify[username] verifyifspecifieduserexist 核实指定用户是否存在
?
deluser[username] deleteexistinguser 删除存在的用户
?
setpassword[username][password] setsauser’spassword 设置用户密码
?
setalias[user][alias] locallyforwardsallemailfor‘user’to‘alias’设置别名
?
showalias[username] showsauser’scurrentemailalias显示别名
?
unsetalias[user] unsetsanaliasfor‘user’ 删除用户别名
?
setforwarding[username][emailaddress] forwardsauser’semailtoanotheremailaddress 转发用户的电子地址到另一个电子地址
?
showforwarding[username]showsauser’scurrentemailforwarding显示用户的当前转发
?
unsetforwarding[username] removesaforward 删除转发
?
user[repositoryname] changetoanotheruserrepository 改变另一个用户库
?
shutdownkillsthecurrentJVM(convenientwhenJamesisrunasadaemon) 关闭当前的服务
?
quit closeconnection 关闭连接
我们可以输入命令:
adduserchenfengcn881213来添加一个的用户,则其用户名为:
chenfengcn,密码为:
881213,地址为:
chenfengcnlocalhost(用户名后的域名跟服务器配置的域名一样,在config.xml文件中配置,我们将在后面部分讨论如何配置服务器域名)。
这样,我们就完成了一个最简单的服务器的搭建操作。
下面就让我们使用Foxmail来测试一下我们的是否真正可以使用吧。
2.3使用Foxmail测试
打开Foxmail,点击“”->“新建”
电子地址:
chenfengcnlocalhost
密码为:
881213
POP3服务器:
localhost
SMTP服务器:
localhost
其余选项均使用默认即可,新建完成后,Foxmail将发送一测试到我们新建的里,点击“收取”,即可收取我们里面的了。
当收到Foxmail发送的测试,就说明我们的可以正常使用了。
作为程序设计人员,我们当然希望能使用自己写的程序来测试我们的服务器是否搭建成功,而不是Foxmail。
下面就让我们用Javamail来实现这一切吧。
James+Javamail构建服务
(二)
电子开发2009-11-3010:
15:
30阅读21评论0字号:
大中小
3Javamail快速入门
进行Javamail开发需要用到两个包:
mail.jar和activation.jar,在开始Javamail编程之前,请自己将这两个包添加到IDE的Buildpath中或将这两个包的路径配置到环境变量中。
3.1使用Javamail向James的发送
3.1.1业务描述
本例将使用Javamail实现的发送功能。
发送需要配置服务器属性信息,配置接收地址,使用SMTP认证获得会话(Session),构建体(MimeMessage),发送。
具体编码如下:
3.1.2编码实现
发送需要两个类:
一个是SMTP用户身份认证类(James在默认情况下,是需要SMTP身份认证的);另一个就是我们的发送类,为简单起见,我们直接将的相关信息,如:
标题、容、发送者、接收者等信息直接写在类中,运行main()函数即发送。
当然,你同样可以为自己的发送系统构造一个发送介面,通过Servlet将相关参数传递至后台进行处理与发送。
其主要代码也就是此main()函数中的容,故不赘述。
SmtpAuth.java用户身份认证代码
Java代码
package .newland.javamail.sample1;
/**
* 用于身份认证
* author Chen.Feng(Kevin)
* mail:
* :
67758633
*/
class SmtpAuth extends javax.mail.Authenticator {
private String user, password;
/**
*
* param getuser
* param getpassword
*/
public void setUserinfo(String getuser, String getpassword) {
user = getuser;
password = getpassword;
}
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(user, password);
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
}
packagecom.newland.javamail.sample1;
/**
*用于身份认证
*@authorChen.Feng(Kevin)
*mail:
chenfengcn@
*:
67758633
*/
classSmtpAuthextendsj