现在的项目往往都需要发送邮件验证,邮件内容推送等功能。所以我就专门研究Apache中James,这是一个专门用来做邮件服务器的开源框架。
Apache James(Java Apache Mail EnterpriseServer)是Apache组织的子项目之一,完全采用纯Java技术开发,实现了SMTP、POP3与NNTP等多种邮件相关协议。James是一个邮件应用平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。James提供了比较完善的配置方案,尤其是关于邮件内容存储和用户信息存储部分,可以选择在文件、数据库或其他介质中保存。
James性能稳定、可配置性强,还是开源项目,所有源代码不存在版权问题,因此,James在项目中的应用日益广泛。 JavamailAPI是一个用于阅读、编写和发送电子消息的可选包(标准扩展),可以用来建立基于标准的电子邮件客户机,它支持各种因特网邮件协议,包括:SMTP、POP、IMAP、MIME、NNTP、S/MIME及其它协议。
我这里使用的是james-2.3.1和javaEmail进行邮件功能的开发。目前测试的功能有邮件的发送和邮件的接收。下面先讲James的下载配置问题。
1.配置前准备:
1.首先下载James服务器,网络上好多都是不能用的,或者配置不能成功。所以最好用我的这个点击打开链接
2.然后需要下载James开发所需要的jar包。下载地址:点击打开链接
3.需要下载JDK,然后安装并配置环境变量(JDK最好是1.6以上,环境变量的配置大家可以网上搜索,这里我就不多说了)
2.启动James
1.将james-2.3.1解压到C盘中(当然也可以解压到其他盘,但是最好放在系统盘中)
2.运行bin目录下的run.bat(在运行之前请确保您的Java环境变量已配置成功,否则将提示运行失败) 显示以下内容表示James服务器已启动成功:
服务器启动成功后,将自动在apps目录下根据james.sar文件生成相应的James发布文件包,我们后面讨论的配置文件config.xml即存在于此发布文件包中。
3.用Telnet管理用户(可以利用这个用户发送邮件,例如QQ中的208017534@qq.com其中208017534就是用户名,就是在这里添加的)
1.用cmd进入MS-DOS里面,输入telnet localhost 4555(注:localhost是邮件服务器名,4555是管理端口,可在appsjamesSAR-INFconfig.xml文件中配置,在此我们使用其默认配置) 这里的localhost可以是上网的IP地址也可以是127.0.0.1.如果需要远程访问就必须用上网的IP地址。如果提示telnet不存在可以在Windows中配置telnet的启动,这个比较简单大家可以去百度或者Google。
2然后输入用户名和密码(在配置文件config.xml中,默认为用户名:root密码:root,可以在配置文件中修改) 然后输入用户名和密码(在配置文件config.xml中,默认为用户名:root密码:root) 出现如下信息说明登陆成功:
3.添加用户,我们可以输入命令:adduser admin password来添加一个的邮件用户,则其用户名为:admin,密码为:password
4.为了可以给外网发送邮件或者接收外网的邮件,我们需要对james-2.3.1appsjamesSAR-INFconfig.xml中的配置文件进行修改。
(1)查找替换所有的localhost为你的域名,比如baobao.com 【如果你没有一个域名,那么可以在system32/drivers/etc/hosts文件中添加一个伪域名用于测试, 192.168.0.45 baobao.com】
(2)找到
把localhost该成你自己想要的邮箱域名, 把自动探测IP属性设置为“false”这里假设改成 baobao.com 如果开了一个帐号 qiang,那么他的邮件地址就是 qiang@baobao.com。注意是两个localhost都要改。
(3)注释掉以下代码
(4)配置DNS Server 在cmd中用ipconfig /all 命令查看你的dns server ip DNS Servers . . . . . . . . . . . 10.202.72.116 10.202.72.118 如果是伪域名,还需要将本机地址也列进去,最好放到第一位。<server>42.96.155.24</server>
添加如下:
(5)配置smtp server,pop3 server等 查找所有myMailServer,替换为你的域名。如: <helloName autodetect="false">myMailServer</helloName>,将myMailServer修改为你的域名。比如:baobao.com
(6)设置smtpserver 打开smtp认证 <authRequired>true</authRequired>
(7)authorizedAddresses中的范围改成 <authorizedAddresses>192.168.0.0/24,127.0.0.0/8</authorizedAddresses> ,不然邮件发送或接收就会被屏蔽掉。
(8)找到<servernames autodetect="true" autodetectIP="true"> 设成 <servernames autodetect="false" autodetectIP="false"> autodetct设为true会自动侦测你的主机名,设成false会用你指定的server name. autodetectIP设为true会为你的servername加上ip.
(9)查找所有的autodetect 和 autodetectIP把对应的值改成false false,把所有localhost改成你的外网IP地址或者你上面设地的域名(这里是baobao.com)
James服务配置完成 注:以上设置好之后,重启james服务,然后就可以写代码测试了。
我测试过,可以给QQ,新浪等发生邮件或者接收邮件。