【发布时间】:2021-10-06 00:05:53
【问题描述】:
我在使用 Javax 发送邮件时遇到问题。我们使用 gmail 大约 4 年从我们的 Java 软件发送邮件。现在我收到以下错误:
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not convert socket to TLS;
nested exception is:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at SendEmail.sendMissingMailWeek(SendEmail.java:233)
at main.negVerkaeufeMailenWeek(main.java:368)
at main.main(main.java:79)
Caused by: javax.mail.MessagingException: Could not convert socket to TLS;
nested exception is:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1907)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:666)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at SendEmail.sendMissingMailWeek(SendEmail.java:226)
... 2 more
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171)
at sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98)
at sun.security.ssl.TransportContext.kickstart(TransportContext.java:220)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:428)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:549)
at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:486)
at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1902)
... 9 more
Process finished with exit code 1
这些是我的 gmail 设置:
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
props.put("mail.smtp.debug", "true");
我也尝试了其他邮件服务器(O365,Strato),但得到了同样的错误。
【问题讨论】:
-
不确定这是否会有所帮助,但尝试传递
-Djdk.tls.client.protocols=TLSv1.2和-Djavax.net.debug=all可能会显示更多信息 -
我的客户端应用程序出现同样的问题。几周前还在工作,现在报错了。
-
@ryvantage 您是否尝试过在邮件配置中提供协议信息?我的意思是,请尝试在您的邮件中包含以下代码
props:props.put("mail.smtp.ssl.protocols", "TLSv1.2")。此外,尝试调整端口465和587,以及配置属性mail.smtp.starttls.required。我希望它有所帮助。 -
请考虑阅读this related google 群组文章,它也会有所帮助。
-
请问,您能否提供有关您的 jdk 和 java 邮件版本的更多信息?我测试了电子邮件与您的配置的集成,它工作正常。也许,问题可能与您的客户端运行的环境有关?