java邮件发送不成功_(转)解决jdk1.8中发送邮件失败(handshake_failure)问题
时间: 2024-01-11 15:05:57 浏览: 126
这可能是因为 JDK 1.8 默认使用 TLSv1.2 协议进行 SSL 握手,而有些邮件服务器不支持该协议导致握手失败。可以尝试以下两种解决方案:
1. 使用 SSLv3 协议进行 SSL 握手
可以通过设置系统属性 `javax.net.ssl.SSLContext` 来指定使用 SSLv3 协议进行 SSL 握手,示例代码如下:
```
Properties props = System.getProperties();
props.setProperty("mail.smtp.ssl.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.ssl.socketFactory.fallback", "false");
props.setProperty("mail.smtp.ssl.socketFactory.port", String.valueOf(smtpPort));
props.setProperty("mail.smtp.ssl.protocols", "SSLv3");
```
2. 升级 JDK 版本
升级到 JDK 1.8.0_131 及以上版本,该版本开始支持 TLSv1.2 的默认协议列表中删除了 RC4 和 MD5 等弱加密算法,可以减少因安全策略导致的握手失败问题。
希望这些解决方案能够帮助到你解决问题。
阅读全文