zl程序教程

您现在的位置是:首页 >  其他

当前栏目

邮件功能本地正常,云服务器报错

2023-04-18 16:51:23 时间

问题:使用javax.mail发送邮件,本地测试一切正常,部署到云服务器就没有响应,显示连接超时,查看错误日志,分析原因为各大服务器厂商为了防范垃圾邮件,屏蔽了25端口,而且由于响应时间默认无限,导致请求超时也没有回复

错误日志

解决方案:

1.申请企业邮箱,支持使用域名发送邮件

2.向云服务器申请解封25端口

3.改用465端口SSL加密发送

我是用的就是改用465端口

//之所以不报错,是因为默认的超时时间无限制,所以会一直卡在连接中。加入下面配置,设置超时时间,可以触发报错。
//连接时间限制,单位毫秒。是关于与邮件服务器建立连接的时间长短的。默认是无限制。
props.setProperty("mail.smtp.connectiontimeout", "5000");
//邮件接收时间限制,单位毫秒。这个是有关邮件接收时间长短。默认是无限制。
props.setProperty("mail.smtp.timeout", "5000");
//邮件发送时间限制,单位毫秒。邮件附加上传的时间长短。默认同样是无限制
props.setProperty("mail.smtp.writetimeout", "5000");
//由于25端口被禁用.改用465端口,走邮件的SSL协议
props.setProperty("mail.port", "465");


props.setProperty("mail.smtp.auth","true");
props.setProperty("mail.smtp.starttls.enable","true");
props.setProperty("mail.smtp.starttls.required","true");
props.setProperty("mail.smtp.socketFactory.port","465");
props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback","false");

PS:邮件内容尽量使用css解决样式问题,不要插入图片,各个浏览器之间对图片的限制会导致邮件图片不显示,影响邮件阅读体验