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

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控制台手动测试邮件发送

不要依赖业务逻辑触发邮件,先在控制台直接测试,排除业务代码的干扰:

  1. 启动Rails控制台:rails c
  2. 调用你的邮件器方法并立即发送:
    AppointmentMailer.your_mail_method(相关参数).deliver_now
    
    此时控制台会输出详细的发送日志,如果有错误(比如认证失败、连接超时)会直接抛出异常,这是最快定位问题的方式。

4. 排查网络与防火墙问题

  • 本地防火墙或代理可能会拦截587端口的连接,尝试关闭防火墙或切换网络(比如手机热点)后再测试。
  • 如果是新的IP地址发送邮件,Google可能会标记为异常登录,去你的Google账号安全中心查看是否有需要确认的登录提醒,确认后再尝试发送。

5. 检查邮件器的命名与文件匹配

你提到邮件器命名是appointement_...,注意拼写是否正确——正确的拼写应该是appointment(少了一个字母n),如果类名和文件名不匹配,Rails会无法加载邮件器,导致发送失败。


内容的提问来源于stack exchange,提问作者Léo Coletta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:38:15