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

Rails Mailer使用新Gmail账号遇Net::SMTPAuthenticationError问题求助

解决Rails Mailer连接新Gmail账号的Net::SMTPAuthenticationError问题

我之前也踩过Gmail SMTP认证的坑,结合你描述的情况——旧账号正常可用、新账号关闭双重认证仍报错,且staging环境也出现相同问题,给你几个针对性的排查步骤:

  • 确认Gmail账号的SMTP访问权限逻辑
    现在Gmail的政策是:未开启双重认证(2FA)的账号,已经不再支持普通密码登录非OAuth类的邮件服务(包括Rails Mailer)。你需要先开启账号的双重认证,然后生成应用专用密码(App Password),用这个16位的专用密码代替普通密码配置到Rails里。
    生成路径:登录Gmail网页端 → 右上角头像 → 管理你的Google账号 → 安全 → 双重认证(确保已开启) → 应用专用密码 → 选择“邮件”+自定义设备名称 → 生成后复制密码。

  • 核对Rails配置的完整性
    检查config/environments/development.rb(以及staging环境对应的config/environments/staging.rb)里的SMTP配置是否正确:

    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
      address: 'smtp.gmail.com',
      port: 587,
      domain: 'your-app-domain.com', # 可填应用域名,或直接用'gmail.com'
      user_name: 'your-new-gmail-address@gmail.com',
      password: 'your-generated-app-password',
      authentication: :plain,
      enable_starttls_auto: true
    }
    

    重点确认:用户名是完整邮箱地址,密码是生成的应用专用密码,authentication设为:plain,enable_starttls_auto为true。

  • 解除Gmail的临时登录限制
    新账号第一次从你的本地/服务器环境登录SMTP,可能被判定为异常登录。先在网页端登录这个新Gmail账号,检查是否有“异常登录提醒”,点击“这是我”解除限制后再测试。

  • 同步staging环境的配置
    staging环境通常用环境变量存储敏感信息(比如Figaro、dotenv或服务器环境变量),确认staging的邮箱用户名和密码已经更新为新账号的信息,没有沿用旧配置。

  • 验证密码输入的准确性
    排查是否有拼写错误、大小写问题,或是复制应用专用密码时多了空格——这类细节很容易被忽略。

如果以上步骤都无效,可以在Rails控制台手动测试发送,获取更详细的错误信息:

ActionMailer::Base.mail(from: 'your-new-gmail@gmail.com', to: 'test@example.com', subject: 'Test', body: 'Test').deliver_now

根据控制台输出的具体提示再针对性排查。

内容的提问来源于stack exchange,提问作者Taylor A. Leach

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:28:41