背景
- 使用javax发送qq邮件就出现了问题
- 我所用的jdk版本是1.8
- 报错内容:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465
- 同时还有下面这个报错:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
初探
- 网上的各种解决方式,大概包括更改另外的端口、开放云服务器端口、新增或者更改javax.mail的相关配置等。
- 上述方式我都尝试过,都没有解决。
柳暗花明
- 看到了一篇博客说是与
java.security
有关,对我来说确实是这个问题。
问题描述
- 根据大佬的描述,要修改
java.security
这个文件中的部分代码,这个文件的位置是:jdk1.8/jre/lib/security/java.security
。 - 我在jdk1.8版本找到了这个路径,但是在jdk1.7中是另外的路径
jdk1.7/conf/security/java.security
- 确实应该是这个文件的问题。
JDK定位
要修改这个文件,首先要定位jdk的位置。下面说一下怎么定位jdk的位置:
-
window下,cmd命令行输入
java -verbose
,看最后两行输出:
如上图,我本地的jdk位置是D:\java8
,根据这个位置,再确定我是jdk1.8,因此那个问题的最终位置应该是在D:\java8\jre\lib\security\java.security
。如果jdk是1.7,那么最终位置可能就是D:\java7\conf\security\java.security
了。 -
linux下,命令行输入
which java
,就可以看到jdk的位置了:
然后其他步骤与window下一样。
终局之战
最后,要打开java.security
文件,然后将jdk.tls.disabledAlgorithm
参数后面的SSLv3、TLSv1、TLSv1.1
都删掉。
- 以window为例,用记事本打开文件,ctrl+F搜索
jdk.tls.disabledAlgorithm
,然后删掉上面三个协议即可。 - 以linux为例,首先进入这个文件所在的目录,然后使用
vim java.security
命令打开这个文件。\
键搜索,输入jdk.tls.disabledAlgorithm
然后回车,会自动定位到代码的位置。然后i
进入插入模式,将上述三个协议删掉即可。
提示:
- 建议删除前先备份。
更多推荐
【java发送qq邮件问题】Could not connect to SMTP host: smtp.qq.com, port: 465 & No ap
发布评论