谷歌移除低安全应用权限后SMTP邮件认证报错如何解决
错误信息
SMTPAuthenticationError at /accounts/signup/ (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials n1-20020a05620a294100b006a6638a59sm3664075qkp.53 - gsmtp')
谷歌账号权限规则更新前,项目邮件发送功能可正常运行,更新后邮件发送模块触发上述SMTP身份验证错误。
原有项目邮件配置代码如下:
EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_HOST_USER = 'tonoabot.noreply@gmail.com' EMAIL_HOST_PASSWORD = os.environ['mailbotPass'] EMAIL_USE_TLS = True DEFAULT_FROM_EMAIL = EMAIL_HOST_USER EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
故障原因
谷歌已正式下线「低安全性应用访问」功能入口,不再支持第三方服务直接使用Gmail账号主密码登录SMTP服务,即使输入的主密码完全正确,直接使用主密码鉴权也会返回535身份验证失败错误。
修复步骤
除密码配置项外,其余原有配置无需调整,按以下操作即可恢复发信功能:
- 登录用于发信的Gmail账号,在账号安全设置页开启两步验证,这是生成应用专用密码的强制前置条件,未开启两步验证时不会显示应用密码的配置入口
- 两步验证开启完成后,在同一安全设置页面找到「应用专用密码」配置项
- 应用类型选择「邮件」,设备类型根据项目实际部署场景选择即可,点击生成按钮后会得到一串16位长度的应用专用密码
- 将项目环境变量中
mailbotPass的值替换为刚生成的16位应用密码,注意不要带入多余空格,重启项目服务后即可正常发送邮件
注意:旧教程中提到的「开启低安全性应用访问」方案已完全失效,无需再寻找对应开关,该功能已被谷歌永久移除。
内容的提问来源于stack exchange,提问作者emplec1
相关产品推荐
相关产品推荐

