SpringBoot在Linux环境下发送163邮件失败(No appropriate protocol (protocol is disabled or cipher suites are inap

2024-04-18 13:33:01 浏览数 (2)

描述

最近把项目从腾讯云迁移到阿里云(linux)后,突然发现邮件功能不能用,经过排查log发现报了一个协议的错误:javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

具体报错信息如下:

代码语言:javascript复制
javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.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:1963)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
	at javax.mail.Service.connect(Service.java:345)
	at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:518)
	at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:437)
	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:361)
	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:356)
	at com.forum.core.Utils.JavaxMailUtil.sendTemplateMail(JavaxMailUtil.java:51)
	at com.forum.frontSystem.Feedback.Service.impl.FeedbackSeviceImpl.lambda$insert$0(FeedbackSeviceImpl.java:124)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)
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:106)
	at sun.security.ssl.TransportContext.kickstart(TransportContext.java:238)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:405)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:384)
	at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:528)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:333)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:229)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
	... 11 more

解决方法

经过网上说法是:jdk1.8版本导致SSL调用权限上有问题。需要修改java.security文件的内容,具体路径在jdk安装目录下的/jre/lib/security 里找到java.security并打开,找到如下图所示的位置,把它们注释掉,再重启你的项目,问题就解决了。

0 人点赞