You need to enable JavaScript to run this app. Rails配置Devise邮件确认功能后无法接收验证邮件问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Rails配置Devise邮件确认功能后无法接收验证邮件问题求助

问题排查&修复方案

  • ENV变量使用错误
    你当前配置里的user_name: ENV['test@gmail.com']、password: ENV['123456']写法完全错误。ENV[]的作用是读取系统环境变量,方括号内需要填环境变量的键名,而非实际值。
    修复方式:

    1. 测试阶段可先直接填实际值:user_name: '你的实际gmail地址',password: '你生成的谷歌应用专用密码'
    2. 生产环境需先在系统中配置对应环境变量,比如设置GMAIL_USER=xxx@gmail.com、GMAIL_PWD=你的授权码,再修改配置为user_name: ENV['GMAIL_USER']、password: ENV['GMAIL_PWD']
  • 谷歌账号认证规则适配
    谷歌早在2022年5月就全量关闭了低安全性应用访问权限,你开启该选项也无法正常使用账号密码直接登录SMTP服务。
    修复方式:

    1. 先给你的谷歌账号开启两步验证
    2. 进入谷歌账号安全设置页,生成「应用专用密码」
    3. 将生成的16位应用专用密码作为SMTP的密码填入配置,不要使用你的谷歌账号原登录密码
  • 配置拼写错误
    你配置里的:tsl => true拼写错误,正确写法为:tls => true,该错误会导致SSL握手失败,邮件发送流程直接中断。

  • 配置位置错误
    你将SMTP配置写在environment.rb中不符合Rails规范,推荐按环境拆分配置:开发环境配置写到config/environments/development.rb,生产环境配置写到config/environments/production.rb,避免不同环境配置冲突。

  • 开启错误提示
    你当前发送失败无报错,是因为开发环境默认关闭了邮件发送错误抛出。在development.rb中添加配置:

    config.action_mailer.raise_delivery_errors = true
    config.action_mailer.perform_deliveries = true
    

    开启后发送出错时会直接抛出异常,方便排查问题。

  • 日志&二次校验

    1. 查看log/development.log中的邮件发送日志,确认是否有发送报错、退信记录
    2. 检查发件用gmail的已发送文件夹、垃圾箱,确认是否是邮件被谷歌拦截未发出
    3. 确认你已经执行过rails db:migrate将confirmable相关字段写入用户表,且user.rb的devise配置中确实添加了:confirmable模块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 15:57:03