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

使用BCryptPasswordEncoder加密邮箱密码后无法发送邮件的问题

问题原因及解决方案

为什么加密后无法发送邮件?

Spring Mail的spring.mail.password配置项不会自动处理BCrypt加密的密码,它会把你写的"{bcrypt}$2a$10$FXSkpQloaZILb7ixYTD2P./yutuASulNhEQ1UVEodX7Ao0oGgcaFG"整个字符串直接当作明文密码发送给SMTP服务器。而SMTP服务器需要的是你的原始明文密码(比如my-password),自然会认证失败。

另外要明确:BCrypt是单向哈希算法,只能用来验证输入的密码和存储的哈希值是否匹配,根本无法反向解密出原始明文密码。这也是它适合存储用户密码的原因,但完全不适合用来配置需要明文的第三方服务(比如SMTP)。

正确的做法

如果想加密配置文件里的邮件密码,应该用可逆的加密方案,比如Spring支持的Jasypt加密:

  • 用Jasypt对明文密码加密,得到加密后的字符串
  • 在配置文件里用{jasypt}前缀标识,Spring启动时会自动解密出明文,再传给Mail组件

如果不想引入额外依赖,也可以用Spring Cloud Config的加密功能,原理类似,都是可逆加密后自动解密。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:33:10