目录

我的学习分享

记录精彩的程序人生

使用Apache Commons Mail 发邮件,用SSL方式

记录一下最近使用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方式发邮件正常。

转载于:https://my.oschina.net/hhaijun/blog/1560297


方法来源:https://blog.csdn.net/u013571196/article/details/78376343

想到阿里云喜欢用安全组屏蔽端口,于是我就赶紧去配置了安全规则。进站出站都配置了,结果还是不行,然后索性把防火墙也关了,依旧不行。经过一番折腾,发现阿里自带屏蔽25端口。简直尴尬,后来找了阿里的一些规则文档,发现需要申请开通屏蔽端口。但是经过咨询了阿里工作人员,发现现在已经不开放25端口,因为什么《互联网信息服务管理办法》、《中国互联网协会反垃圾邮件规范》均对垃圾邮件进行说明与管理规范。让我考虑SSL加密SMTP通过465端口进行发件。然后试了一波,发现465发送不了QQ邮件,尝试了587端口成功了。

https://blog.csdn.net/weixin_42359392/article/details/86659027