原创

在springboot中使用腾讯QQ邮箱发送邮件时出现的错误

温馨提示:
本文最后更新于 2022年04月04日,已超过 992 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

一、问题描述

1.1 问题一

STARTTLS is required but host does not support STARTTLS

1.2 解决办法

starttls关闭,修改以下两个参数
mail.smtp.starttls.enable: false
mail.smtp.starttls.required: false

详细配置
properties:
      mail.smtp.auth: true
      mail.smtp.ssl.enable: true
      mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
      mail.smtp.socketFactory.port: 465
      mail.smtp.starttls.enable: false
      mail.smtp.starttls.required: false
      mail.smtp.connectiontimeout: 50000
      mail.smtp.timeout: 30000
      mail.smtp.writetimeout: 50000

1.3 问题二

在我解决完第一个问题后,在本地跑没有问题,然后打包到服务器上就出现了下面这个问题。具体原因我也不太清楚,查了许多文章,发现大概是jdk的原因。
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

1.4 解决办法

1.4.1 分析原因

比较了一下两个环境,排查一下无关的因素,基本定位了,是jdk版本的问题。
我本地jdk版本是:1.8.0_65。服务器端为:1.8.0_322。
降低jdk版本虽然可以,但是不是一个好的办法,于是就找到另个解决办法。

1.4.2 修改配置

①修改:D:\Java\jdk1.8.0_322\jre\lib\security\java.security/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/lib/security/java.security文件。
②删除:SSLv3, TLSv1, TLSv1.1这几个参数,具体为什么我也不知道,如有知道的欢迎评论。所以呢,修改之前请备份该文件。

file

正文到此结束
本文目录