配置Mail相关的ioc文件

特别提醒

严重建议用阿里云邮进行测试,QQ邮箱好多坑

打开dao.js, 把conf的定义改一下, 使其能扫描到custom下面所有的配置文件

  1. conf : {
  2. type : "org.nutz.ioc.impl.PropertiesProxy",
  3. fields : {
  4. paths : ["custom/"]
  5. }
  6. },

新增一个文件,路径为 conf/custom/mail.properties 内容如下

  1. mail.HostName=smtp.aliyun.com
  2. mail.SmtpPort=25
  3. mail.UserName=wendal3@aliyun.com
  4. mail.Password=book@2015
  5. mail.SSLOnConnect=false
  6. mail.From=wendal3@aliyun.com
  7. mail.charset=UTF-8

注意,上述账号只是测试用的,密码随时更改,请使用您自己的QQ邮箱信息及服务器地址

再新增一个文件, 路径为 conf/ioc/mail.js 内容如下

  1. var ioc={
  2. emailAuthenticator : {
  3. type : "org.apache.commons.mail.DefaultAuthenticator",
  4. args : [{java:"$conf.get('mail.UserName')"}, {java:"$conf.get('mail.Password')"}]
  5. },
  6. htmlEmail : {
  7. type : "org.apache.commons.mail.ImageHtmlEmail",
  8. singleton : false,
  9. fields : {
  10. hostName : {java:"$conf.get('mail.HostName')"},
  11. smtpPort : {java:"$conf.get('mail.SmtpPort')"},
  12. authenticator : {refer:"emailAuthenticator"},
  13. SSLOnConnect : {java:"$conf.get('mail.SSLOnConnect')"},
  14. from : {java:"$conf.get('mail.From')"},
  15. charset : {java:"$conf.get('mail.charset', 'UTF-8')"}
  16. }
  17. }
  18. };

含义是, 声明一个非单例的HtmlEmail定义,配置信息均通过conf对象获取.

在MainSetup类的init方法末尾,加入下列测试代码

  1. // 测试发送邮件
  2. try {
  3. HtmlEmail email = ioc.get(HtmlEmail.class);
  4. email.setSubject("测试NutzBook");
  5. email.setMsg("This is a test mail ... :-)" + System.currentTimeMillis());
  6. email.addTo("vt400@qq.com");//请务必改成您自己的邮箱啊!!!
  7. email.buildMimeMessage();
  8. email.sendMimeMessage();
  9. } catch (Exception e) {
  10. e.printStackTrace();
  11. }

启动Tomcat,观察日志输出, 如无异常, 您填写的邮箱将会收到一封邮件, 然后务必把上诉测试代码删除!!

  • 抛出端口错误之类的错误: 请使用QQ邮箱等国内地址, 并确保dao.js修改正确
  • 登陆失败,检查一下mail.properties的账号密码,服务器地址等等
  • 发送失败, 别尝试发送给gmail之类的,发自己的邮箱最靠谱