http://blog.csdn.net/fei1502816/article/details/7599178
最近公司做的一个项目,用户注册需要邮箱验证,本想调用别人的服务器,调用apache自带的email包实现!
但Boos发话,要自己搭建一个邮箱服务器。。。
先前使用了winMail,但是收费的,最终不了了之
后续又看了sendMail,只不过sendMail是在linux下,而我们的项目是部署在windowss 平台下...
最终选定了Apache James,个人认为还算好用
在网上整理了整理,最终还是想写个笔记,分享给大家
1.环境搭建
下载JDK
下载james 到apache网站下载:http://apache.freelamp.com/james/server/apache-james-2.3.2.zip
下载javamail相关jar包
如果下载不到,可到CSDN资源里去下载,专门上传了一份
james-binary-2.3.1.zip:http://download.csdn.net/detail/fei1502816/6241713
mail.jar:http://download.csdn.net/detail/fei1502816/6241757
2. 启动james
进入james安装目录:C:\james-2.3.2\bin
运行run.bat
默认我们不更改C:\james-2.3.2\apps\james\SAR-INF 下的config.xml
如果不修改,邮件服务器的域名默认为localhost,则跳过第三步骤
注意:C:\james-2.3.2\apps\james\SAR-INF 下的config.xml配置文件是在james第一次启动时生成的
3. 修改james-2.3.2\apps\james\SAR-INF\config.xml配置文件
(1)查找替换所有的localhost为你的域名,比如bjservice.com
【如果你没有一个域名,那么可以在system32/drivers/etc/hosts文件中添加一个伪域名用于测试, 192.168.0.45 bjservice.com】
(2)找到
- <span style="font-size:16px;">……
- <postmaster>Postmaster@localhost</postmaster>
- ……
- <servernames autodetect="true" autodetectIP="true">
- <servername>localhost</servername>
- </servernames>
- …… </span>
把localhost该成你自己想要的邮箱域名, 把自动探测IP属性设置为“false”这里假设改成 bjservice.com 如果开了一个帐号 bjxc ,那么他的邮件地址就是 bjxc@bjservice.com 修改结果如下:
- <span style="font-size:16px;">……
- <postmaster>Postmaster@bjservice.com</postmaster>
- ……
- <servernames autodetect="false" autodetectIP="false">
- <servername><u><span style="color:#006699;">bjservice</span></u>.com</servername>
- </servernames>
- ……</span>
(3)注释掉以下代码
- <span style="font-size:16px;"><!--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
- <processor> relay-denied </processor>
- <notice>550 - Requested action not taken: relaying denied</notice>
- </mailet--></span>
(4)配置DNS Server
在cmd中用ipconfig /all 命令查看你的dns server ip
DNS Servers . . . . . . . . . . . : 202.106.46.151
202.106.195.68
如果是伪域名,还需要将本机地址也列进去,最好放到第一位。<server>192.168.0.45</server>
添加如下:
- <span style="font-size:16px;"> <dnsserver>
- <servers>
- <server>192.168.0.45</server>
- <server>202.106.46.151</server>
- <server>202.106.195.68</server>
- </servers>
- <autodiscover>false</autodiscover>
- <authoritative>false</authoritative>
- <maxcachesize>50000</maxcachesize>
- </dnsserver></span>
(5)配置smtp server,pop3 server等
查找所有myMailServer,替换为你的域名。如:
<helloName autodetect="false">myMailServer</helloName>,将myMailServer修改为你的域名。比如:bjservice.com
(6)设置smtpserver
打开smtp认证 <authRequired>true</authRequired>
James服务配置完成
注:以上设置好之后,重启james服务
四.创建邮件帐号
进入控制台命令:C:\james\bin>telnet localhost 4555
然后将进入:JAMES Remote Administration Tool 2.3.1
Please enter your login and password
Login id:
默认的登陆id 为root 密码也为 root ,登陆成功后结果如下:
创建新用户的命令是:adduser username password,如下图
账号创建成功后,退出管理器我们就可以开始我们的Mail应用了。
代码如下:
- <span style="font-size:16px;">package test;
- import org.apache.commons.mail.EmailException;
- import org.apache.commons.mail.HtmlEmail;
- public class MyFirstMail {
- /**
- * 发送邮件
- * @param contents 邮件内容
- * @param toEmail 收件人
- * @throws EmailException
- */
- public static void sendMail(String contents, String toEmail) throws EmailException {
- try {
- HtmlEmail email = new HtmlEmail();
- // 设定smtp服务器
- email.setHostName("192.168.0.45");
- // 设定收件人
- email.addTo(toEmail);
- //发送的邮件地址
- email.setFrom("bjtest@bjservice.com", "xxx");
- // 设定smtp服务器的认证资料信息
- email.setAuthentication("bjtest", "123456");
- email.setSubject("标题");
- // 设定是否使用SSL
- //email.setSSL(Boolean.TRUE);
- // 设定SSL端口gmail端口465、其它25
- //email.setSslSmtpPort("465");
- //设定Debug输出信息
- //email.setDebug(true);
- //设定内容的语言集
- email.setCharset("UTF-8");
- email.setHtmlMsg(contents);
- email.send();
- System.out.println("邮件发送成功");
- } catch (Exception e) {
- System.out.println("邮件发送失败");
- e.printStackTrace();
- }
- }
- public static void main(String[] args) throws EmailException {
- String str = "<html>您好,xxx!</html>";
- String email="xxx@126.com";
- sendMail(str,email);;
- }
- }</span>
OK,大功告成!!!