如何修复Devise邮件确认中的‘535-5.7.8用户名密码不被接受’错误
解决Rails Devise邮件确认的Net::SMTPAuthenticationError问题
针对你遇到的Gmail SMTP认证失败问题,按以下步骤排查:
1. 启用两步验证并生成应用专用密码
Gmail已停止支持直接使用账号密码登录第三方SMTP服务,必须先开启两步验证(2FA),再生成应用专用密码:
- 登录Google账号,进入「安全」设置
- 开启两步验证(按引导完成绑定)
- 在两步验证设置下方,找到「应用专用密码」,生成一个新密码(选择「邮件」作为应用类型,设备选「其他」)
- 将SMTP配置里的
password字段替换为这个生成的应用密码,而非原账号密码
2. 修正SMTP配置细节
调整config/environments/development.rb中的SMTP设置,移除不必要的配置并确保参数正确:
config.action_mailer.smtp_settings = { address: "smtp.gmail.com", port: 587, authentication: :plain, # 符号或字符串格式均兼容 enable_starttls_auto: true, user_name: "xyz@gmail.com", password: "你的应用专用密码", # 替换为生成的应用密码 domain: "gmail.com" }
- 移除
openssl_verify_mode: "none",默认SSL验证更安全,也能避免潜在认证问题 - 确保
user_name与Devise配置的mailer_sender(config/initializers/devise.rb中的xxx@gmail.com)尽量一致,减少Gmail拦截概率
3. 检查Google账号安全状态
- 登录Google账号后,查看「最近的安全活动」,确认是否有SMTP登录被拦截记录,如有需手动解锁
- 确保账号未被限制第三方应用访问
4. 重启Rails服务器
修改配置后必须重启Puma服务器,新配置才会生效
完成以上步骤后,重新触发邮件确认流程,即可解决认证错误问题。
内容的提问来源于stack exchange,提问作者NoTProgger
相关产品推荐
相关产品推荐

