JDK17 JavaMail 发送邮件,默认开启 SSL 报错解决方法

分享 0 192
tanghf
tanghf 2021-11-22 16:02
javax.mail.MessagingException: Could not connect to SMTP host: smtp.exmail.qq.com, port: 465;
nested exception is:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at game.hao.demo.email.EmailService.sendText(EmailService.java:168)
at game.hao.demo.email.EmailService.sendText(EmailService.java:155)
at game.hao.demo.email.EmailService.lambda$init$0(EmailService.java:87)
at com.zdemo.zhub.ZHubClient.lambda$rpcSubscribe$10(ZHubClient.java:567)
at com.zdemo.EventType.accept(EventType.java:30)
at com.zdemo.AbstractConsumer.accept(AbstractConsumer.java:49)
at com.zdemo.zhub.ZHubClient.lambda$init$6(ZHubClient.java:245)
at com.zdemo.zhub.ZHubClient.lambda$new$0(ZHubClient.java:55)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:172)
at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98)
at java.base/sun.security.ssl.TransportContext.kickstart(TransportContext.java:240)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:443)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:421)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:549)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:354)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:237)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
... 12 more
原因:jdk17版本开启了了TSL验证,jdk14是正常的
修改:
1.找到jdk目录D:\software\jdk-17\conf\security,打开文件java.security
2.找到以下内容,
# Example:
# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048, \
# rsa_pkcs1_sha1, secp224r1
jdk.tls.disabledAlgorithms= SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
3.去掉TSL相关
# Example:
# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048, \
# rsa_pkcs1_sha1, secp224r1
jdk.tls.disabledAlgorithms= SSLv3, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL


还有不明白?追问
  • 消灭零回复
本周热帖
没有相关数据