You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot发送邮件遇javax.net.ssl.SSLHandshakeException异常求助

解决Spring Boot发送Gmail邮件的SSL握手异常

问题根源

出现javax.net.ssl.SSLHandshakeException: No appropriate protocol异常,是因为高版本JDK默认禁用了TLSv1/TLSv1.1等旧协议,而Gmail SMTP服务要求使用TLSv1.2及以上版本,导致协议握手不匹配。

修复方案

1. 补充邮件配置强制指定TLS版本

在application.yml的邮件配置中,新增SMTP协议指定配置,明确使用TLSv1.2:

spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: ${username}
    password: ${app-password}
    properties:
      mail:
        transport:
          protocol: smtp
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
          ssl:
            protocols: TLSv1.2

核心新增项:smtp.ssl.protocols: TLSv1.2,强制应用使用TLS1.2完成SSL握手。

2. 调整JDK安全配置(方案1无效时使用)

如果JDK全局禁用了TLSv1.2,需修改JDK安装目录下的jre/lib/security/java.security文件:

  • 定位到jdk.tls.disabledAlgorithms配置行
  • 移除其中的TLSv1.2(若存在)
  • 保存后重启应用

3. 验证Gmail应用密码有效性

确认配置中的${app-password}是Gmail的应用专用密码:

  • 开启Google账号两步验证后,才能生成应用专用密码
  • 用生成的应用密码替换普通账号密码,避免因2FA导致的权限问题

测试验证

修改配置后重启应用,重新触发邮件发送,检查异常是否消除。

内容的提问来源于stack exchange,提问作者Susmitha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:45:38