【java发送qq邮件问题】Could not connect to SMTP host: smtp.qq.com, port: 465 & No appropriate protocol

背景

  • 使用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进入插入模式,将上述三个协议删掉即可。

提示:

  • 建议删除前先备份。
    在这里插入图片描述
错误:无法安装软件包,因为发生了一个OS错误:httpsconnectionpool(hos。 这个错误通常是由于操作系统的网络连接问题引起的。可能是由于以下原因之一: 1. 网络连接错误:检查你的网络连接是否正常工作。尝试打开一个网页或进行其他网络操作来确认你的网络连接是否正常。 2. 防火墙或代理问题:如果你使用了防火墙或代理服务器,请确保它们没有阻止你的网络连接。你可以尝试通过禁用防火墙或更改代理设置来解决此问题。 3. 软件源问题:软件包的安装可能需要访问一个特定的软件源。检查你是否正确配置了软件源,并且它没有被阻止。 4. 安全证书问题:如果操作系统在建立HTTPS链接时出现问题,可能是由于缺少或损坏的安全证书。请确保你的操作系统具有最新的根证书和安全更新。 如果你还是无法解决这个问题,你可以尝试以下解决方法: 1. 更改软件源:尝试更改软件源为另一个可信的源,以查看是否可以从该源安装软件包。 2. 使用代理服务器:如果你使用了代理服务器,请尝试更改代理设置,或者使用不同的代理服务器来解决此问题。 3. 检查操作系统设置:检查操作系统的网络设置,确保没有任何限制或异常配置。 4. 寻求帮助:如果你尝试了以上方法仍无法解决问题,可能需要寻求技术专家或软件开发者的帮助,他们可能能够提供更具体的解决方案。 总之,这个错误通常是由于操作系统的网络连接问题引起的,在解决问题之前,我们应该逐个排除潜在的原因,并尝试不同的解决方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值