AWS Elastic Beanstalk部署Django后SMTP发送邮件报错如何解决
报错原因
你遇到的SMTPAuthenticationError 534报错是谷歌账号的安全拦截机制导致的:
- 本地运行时你的IP属于谷歌信任的常用登录环境,不会触发拦截,部署到AWS Elastic Beanstalk后,请求来自AWS机房的陌生IP,触发谷歌的陌生登录校验
- 2022年5月30日之后谷歌已全面停用普通个人账号的「允许低安全性应用访问」功能,你之前的配置已经不生效,无法绕过安全校验
解决步骤
- 替换为应用专用密码:首先为你的谷歌账号开启两步验证,进入账号安全设置页生成应用专用密码,将配置项
EMAIL_HOST_PASSWORD的值替换为生成的16位无空格专用密码,不要使用原账号登录密码,该配置优先级高于普通登录校验,可绕过陌生IP拦截 - 放行陌生登录请求:登录对应谷歌账号,进入安全设置页的「最近安全活动」板块,找到来自AWS美西2区域的陌生登录尝试记录,确认为本人操作后点击放行,完成操作10分钟内重新测试邮件发送功能
- 排查网络规则:检查Elastic Beanstalk实例关联的安全组出站规则,确认允许587端口的TCP出站流量,同时确认所属VPC的网络ACL没有拦截对应端口的出站请求
生产环境优化建议
Gmail SMTP仅适合个人开发测试场景,存在发送量限制、安全拦截频繁等问题,生产环境建议切换为AWS SES(简单邮件服务),同AWS生态兼容性更好,无跨服务商的安全校验问题,稳定性和送达率更高,仅需在SES控制台验证你的发件邮箱/域名,替换Django SMTP配置为SES提供的对应参数即可使用。
内容的提问来源于stack exchange,提问作者vishal anand
相关产品推荐
相关产品推荐

