现在的项目往往都需要发送邮件验证,邮件内容推送等功能。所以我就专门研究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服务器已启动成功:

                       Apache James邮件服务器介绍及配置发送外网邮件_经验分享

                      服务器启动成功后,将自动在apps目录下根据james.sar文件生成相应的James发布文件包,我们后面讨论的配置文件config.xml即存在于此发布文件包中。

3.用Telnet管理用户(可以利用这个用户发送邮件,例如QQ中的208017534@qq.com其中208017534就是用户名,就是在这里添加的)

               1.用cmd进入MS-DOS里面,输入telnet localhost 4555(注:localhost是邮件服务器名,4555是管理端口,可在\apps\james\SAR-INF\config.xml文件中配置,在此我们使用其默认配置) 这里的localhost可以是上网的IP地址也可以是127.0.0.1.如果需要远程访问就必须用上网的IP地址。如果提示telnet不存在可以在Windows中配置telnet的启动,这个比较简单大家可以去百度或者Google。

              2然后输入用户名和密码(在配置文件config.xml中,默认为用户名:root密码:root,可以在配置文件中修改)
然后输入用户名和密码(在配置文件config.xml中,默认为用户名:root密码:root)
出现如下信息说明登陆成功:

                     Apache James邮件服务器介绍及配置发送外网邮件_经验分享_02

 

                  3.添加用户,我们可以输入命令:adduser admin password来添加一个的邮件用户,则其用户名为:admin,密码为:password

 

4.为了可以给外网发送邮件或者接收外网的邮件,我们需要对james-2.3.1\apps\james\SAR-INF\config.xml中的配置文件进行修改。

             (1)查找替换所有的localhost为你的域名,比如baobao.com
             【如果你没有一个域名,那么可以在system32/drivers/etc/hosts文件中添加一个伪域名用于测试,       192.168.0.45  baobao.com】

             (2)找到           

    Apache James邮件服务器介绍及配置发送外网邮件_经验分享_03
     把localhost该成你自己想要的邮箱域名, 把自动探测IP属性设置为“false”这里假设改成 baobao.com 如果开了一个帐号 qiang,那么他的邮件地址就是      qiang@baobao.com。注意是两个localhost都要改。

            (3)注释掉以下代码

              Apache James邮件服务器介绍及配置发送外网邮件_经验分享_04
            (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>

添加如下:

                      Apache James邮件服务器介绍及配置发送外网邮件_经验分享_05

             (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服务,然后就可以写代码测试了。