通过ActionMailer发送Gmail邮件时出现身份验证错误
解决ActionMailer通过Gmail发送邮件的安全验证问题
兄弟,我太懂你这种碰到Gmail安全提示的糟心感了!你之前试的那些方法其实现在已经不太管用啦——Google早在2022年就把「不太安全的应用」这个选项给淘汰了,所以哪怕你开了,还是会触发安全警告。给你一套现在能用的靠谱方案:
第一步:开启Google账户的两步验证(2FA)
这是后续操作的前提,登录你的Google账户后,进入「安全」页面,找到「两步验证」选项,按照提示完成绑定(可以选手机验证码或者Google Authenticator这类验证器),完成后才能生成专用的应用密码。第二步:生成App Password(应用专用密码)
开启两步验证后,回到「安全」页面,就能看到「App Passwords」选项(没开2FA的话这个选项不会显示哦):- 选择应用类型为「Mail」
- 设备选「Other」,随便输入一个标识比如「Rails ActionMailer」
- 点击生成,会得到一个16位的字符串密码,把它存好,这个就是你要在ActionMailer里用的密码,不是你的Gmail登录密码!
第三步:调整ActionMailer的开发环境配置
打开你的config/environments/development.rb,把SMTP设置改成下面这样:config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { address: 'smtp.gmail.com', port: 587, domain: 'gmail.com', user_name: '你的完整Gmail地址@gmail.com', password: '刚才生成的16位App Password', authentication: 'plain', enable_starttls_auto: true }这里注意
authentication用plain就可以,enable_starttls_auto一定要设为true,确保连接是加密的,这也是Google要求的。第四步:测试发送邮件
启动Rails控制台,跑个测试命令验证一下:# 假设你有个UserMailer和welcome_email方法 UserMailer.welcome_email(User.first).deliver_now要是能成功收到邮件,就说明配置没问题,也不会再收到那个烦人的不安全应用登录提示了。
另外提一句,要是你是在生产环境用邮件服务,更建议用SendGrid、Mailgun这类专门的邮件服务商,Gmail有发送数量限制,而且容易被当成垃圾邮件哦。
内容的提问来源于stack exchange,提问作者S. Harper
相关产品推荐
相关产品推荐

