生产环境下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
相关产品推荐
相关产品推荐

