Rails 5.1.4 Mailer无法发送邮件问题求助
解决Rails 5.1.4 Gmail SMTP邮件无法发送的问题
我来帮你排查下这个Gmail SMTP在Rails 5.1.4里发不出邮件的问题,我之前也碰到过类似的情况,给你几个关键的排查点和解决办法:
1. 确认Gmail账号的应用密码配置
- 首先必须确保你的Google账号已经开启了两步验证,这是生成有效应用密码的前提,未开启两步验证的账号无法使用应用密码登录SMTP服务。
- 检查你生成的应用密码是否对应「邮件」应用,且复制时没有多余空格或字符缺失——有时候复制过程中容易带空格,直接导致认证失败。
2. 完善Rails开发环境配置
你的config/environments/development.rb基础配置没问题,但可以补充/调整以下内容来辅助排查:
- 开启邮件发送错误抛出和日志输出,这样能直接看到失败原因:
config.action_mailer.raise_delivery_errors = true config.action_mailer.logger = Logger.new(STDOUT) - 尝试将
domain字段改为localhost(本地开发场景下Gmail对这个字段要求不高,但部分环境下会影响认证):config.action_mailer.smtp_settings = { address: 'smtp.gmail.com', port: 587, domain: 'localhost', # 调整这里 user_name: 'username@gmail.com', password: 'app-password-from-google', authentication: 'plain', enable_starttls_auto: true }
3. 用Rails控制台手动测试邮件发送
不要依赖业务逻辑触发邮件,先在控制台直接测试,排除业务代码的干扰:
- 启动Rails控制台:
rails c - 调用你的邮件器方法并立即发送:
此时控制台会输出详细的发送日志,如果有错误(比如认证失败、连接超时)会直接抛出异常,这是最快定位问题的方式。AppointmentMailer.your_mail_method(相关参数).deliver_now
4. 排查网络与防火墙问题
- 本地防火墙或代理可能会拦截587端口的连接,尝试关闭防火墙或切换网络(比如手机热点)后再测试。
- 如果是新的IP地址发送邮件,Google可能会标记为异常登录,去你的Google账号安全中心查看是否有需要确认的登录提醒,确认后再尝试发送。
5. 检查邮件器的命名与文件匹配
你提到邮件器命名是appointement_...,注意拼写是否正确——正确的拼写应该是appointment(少了一个字母n),如果类名和文件名不匹配,Rails会无法加载邮件器,导致发送失败。
内容的提问来源于stack exchange,提问作者Léo Coletta
相关产品推荐
相关产品推荐

