记录一下最近使用Commons Mail遇到一个小问题。服务器是阿里云的ECS,由于关闭了25端口,只能使用SSL方式发邮件。按照官方的代码试了一下,一直提示连接不上SMTP服务器。
// 这是官方的例子
Email email = new SimpleEmail();
email.setHostName("smtp.googlemail.com");
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator("username", "password"));
email.setSSLOnConnect(true);
email.setFrom("user@gmail.com");
email.setSubject("TestMail");
email.setMsg("This is a test mail ... :-)");
email.addTo("foo@bar.com");
email.send();
后来加了 setDebug(true) ,查看日志发现并没有使用SSL方式,提示isSSL false,代码里已经设置了 setSSLOnConnect(true)。网上查了一下说是Commons Mail对SSL的支持少一个设置,在代码里加上:
System.setProperty("mail.smtp.ssl.enable", "true");
再测试,SSL方式发邮件正常。