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

升级Rails 5后密码重置邮件失效,遇Net::SMTPAuthenticationError错误

解决Rails 5下Gmail密码重置邮件的SMTP认证错误问题

刚升级Rails 5就碰到这个邮件认证坑,太闹心了!我帮你捋捋几个关键的排查和解决步骤,亲测有效的那种:

1. 先放弃「允许低安全应用」这个思路——它已经没用了

Google早在2022年就彻底停用了低安全应用访问权限,你之前开这个选项其实根本起不到作用,这是很多人踩的第一个坑。

2. 启用「应用专用密码」(前提是开启了两步验证)

如果你的Gmail账号开了两步验证,这是最稳妥的方案:

  • 登录你的Google账号,进入「安全」设置页面
  • 找到「应用专用密码」选项,生成一个专门给Rails用的密码(记得选「邮件」作为应用类型)
  • 把这个生成的16位密码替换你Rails配置里的邮箱密码,比如在config/environments/development.rb里:
config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'localhost:3000',
  user_name:            '你的gmail邮箱地址',
  password:             '这里填生成的应用专用密码',
  authentication:       'plain',
  enable_starttls_auto: true
}

3. 如果没开两步验证?试试「不太安全的应用」替代方案(仅限测试环境)

注意:这个方案只适合本地测试,绝对不能用在生产环境!

  • 登录Google账号,搜索开启「Less secure app access」(现在藏得比较深,直接搜能快速找到)
  • 开启这个选项后,回到Rails配置,确保你的邮箱密码是正确的,配置里的authentication设为plain,enable_starttls_auto设为true

4. 检查Rails 5的邮件配置细节

Rails 5在邮件配置上有一些小变化,别踩这些细节坑:

  • 确认config.action_mailer.perform_deliveries = true(开发环境默认是开启的,但如果被修改过就会导致邮件不发送)
  • 打开config.action_mailer.raise_delivery_errors = true,这样能看到更详细的错误信息,方便排查
  • 确保domain设置正确,开发环境可以设为'localhost:3000'或者你的本地域名

5. 测试配置是否生效

可以在Rails控制台里直接测试发送邮件,快速验证配置:

UserMailer.password_reset(User.first).deliver_now

如果控制台里没有报错,说明配置没问题,那可能是密码重置的控制器代码有问题;如果还是报错,再回头检查SMTP配置的每一项。

另外,生产环境建议不要用Gmail,改用SendGrid、Mailgun这些专门的邮件服务,更稳定也不会碰到Google的各种限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:03:03