在之前一篇博客中:通过javax.mail实现java程序发送邮件功能(示例QQ邮箱),通过javax.mail确实可以做到发送简单邮件的功能,但是当我们将它部署在阿里云服务器中(这里我使用的是阿里云的轻量级服务器),就会莫名出现Could not connect to SMTP host: smtp.qq.com, port: 25, response: -1这样的错误。
在网上找了比较多的技术贴,发现是阿里云服务器将25端口禁用了。至于为什么禁用25端口,答案好像是ECS基于安全考虑,对垃圾邮箱进行了管理和规范,才禁用的。。等等。。。。。具体不详谈了。
当然能封禁25端口,也就可以解封啦,下面呈上解封教程地址:https://yq.aliyun.com/articles/701303
除了解封,也可以考虑SSL加密SMTP通过465或者587端口进行发件。我这边是通过465端口成功了,没有尝试587,如果465不成功小伙伴也可以考虑587来实现。这样阿里云是不会拦截的。
怎样使用呢? 需要给你的程序中加入以下代码(我这里使用的是QQ邮箱,其他邮箱大致类似):
//使用SSL加密SMTP通过465端口进行邮件发送
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put(