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

生产环境下Rails配置ActionMailer无法发送Gmail邮件求助

解决Rails Mailer使用Gmail时的535-5.7.8认证错误

针对你遇到的Gmail SMTP认证失败问题,按以下步骤排查和修复:

1. 确认应用密码有效性

  • 应用密码是16位无空格字符串,生成时务必完整复制(不要手动添加或删除空格)。
  • 生成应用密码时,选择「其他(自定义名称)」类型,确保是为你的Rails应用专门生成的,而非其他服务的密码。

2. 验证环境变量注入是否正确

在Rails控制台中执行以下命令,确认环境变量加载的凭证与实际一致:

puts ENV['GMAIL_APP_USER']
puts ENV['GMAIL_APP_PASSWORD']

如果输出与你的邮箱、应用密码不符,说明环境变量未正确配置,需要检查你的凭证注入方式(比如dotenv文件、服务器环境变量设置等)。

3. 优化SMTP配置细节

调整你的config.action_mailer.smtp_settings配置,移除不必要的选项并修正关键字段:

config.action_mailer.smtp_settings = {
  address: 'smtp.gmail.com',
  port: 587,
  domain: 'gmail.com', # 替换未上线的自定义域名,Gmail SMTP对此字段要求宽松
  user_name: ENV['GMAIL_APP_USER'],
  password: ENV['GMAIL_APP_PASSWORD'],
  authentication: :plain,
  enable_starttls_auto: true
}
  • 移除openssl_verify_mode: 'none':启用enable_starttls_auto后,保持默认SSL验证即可,禁用验证可能触发Gmail的安全拦截。
  • default_url_options说明:该字段用于生成邮件中的跳转链接(如激活、重置密码链接),本地开发时可设置为{ host: 'localhost', port: 3000 },上线后替换为正式域名,此配置不影响SMTP认证。

4. 检查Gmail账户状态

  • 登录你的Gmail账户,进入「安全中心」查看是否有异常登录记录或账户锁定提示,若有需解锁账户。
  • 确认「不太安全的应用访问」已关闭(启用2FA后该选项会自动禁用,无需手动操作)。

日志中的MYHOSTNAME是服务器主机名,与SMTP认证无关,无需修改配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:43:15