斯姆普利布。SMTP 身份验证错误:(534, b'5.7.9 需要特定于应用程序的密码



smtplib。SMTPAuthenticationError:(534,b'5.7.9需要特定于应用程序的密码。有关详细信息,请访问\n5.7.9https://support.google.com/mail/?p=InvalidSecondFactorh22sm15927247pfv.25-gsmtp'(

环境变量已设置,但不起作用(即使它是确切的值(。

  • 我已经在谷歌账户中设置了应用程序密码,captcha被禁用
  • 我已经在.bashrc文件中设置了env变量export EMAIL_USER='da24@gmail.com'
  • os.environ.get('EMAIL_USER')和邮件值字符串之间的比较为True

我正试图将其导入配置文件中,当我使用harcoded值时,它运行良好,但当我使用os.environ.get('EMAIL_USER')时,它停止工作并引发此错误。

应用程序密码是一个16位密码,它允许不太安全的应用程序或设备访问您的谷歌帐户。应用程序密码只能与打开两步验证的帐户一起使用。

https://support.google.com/accounts/answer/185833?hl=en

使用应用程序密码,例如EMAIL_USER="example.com">EMAIL_PASSWORD="twtsxiraaxpcuhuyp">。如果您没有gmail应用程序密码,请使用生成密码创建一个新的应用程序。检查你的应用程序和密码https://myaccount.google.com/apppasswords.祝你好运

在谷歌帐户中创建了一个应用程序密码。将创建的密码传递到环境变量中,它就工作了。只需将常规密码替换为应用程序的16位应用程序密码即可。

幸运的是,后来找到了答案,需要重新启动Linux或重新加载bashrc文件。除非发生这种情况,否则env不会注册。此外,使用python控制台设置env变量也不起作用,即使在重新启动后也是如此。

多亏了@Muhammadalive的回答和其他问题,我才成功了。我将在我的代码下面复制,因为有些人投票支持社区机器人的请求,以获得更明确的答案。

我目前正在开发中。如果部署后我认为有必要更新答案,我会回来编辑它。

我使用python解耦来避免在我的设置中写入密码和电子邮件.py.

# settings.py
from decouple import config
#
# ... More code
#
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_POST = 587
EMAIL_USE_TLS = True
# EMAIL_HOST_USER is the email: 'example@gmail.com'
EMAIL_HOST_USER = config("EMAIL_HOST_USER")
# EMAIL_HOST_PASSWORD is the 16 digit 'app password': 'twexamplexpcuhuy'
EMAIL_HOST_PASSWORD = config("EMAIL_HOST_PASSWORD")

我有密码和电子邮件的文件被称为";。env";它看起来像这样:

# .env
#
# ... More code
#
EMAIL_HOST_USER = example@gmail.com
EMAIL_HOST_PASSWORD = twexamplexpcuhuy
逐步:
  1. 在您的谷歌帐户中启用两步验证
  2. 在你的谷歌账户中为你的django应用程序创建一个应用程序密码。这将是一个16位的密码,不同于你的谷歌帐户密码。谷歌把它分成四个部分给你,比如";twex ampl expc uhuy";,但你会像";tweexamplelexpcuhuy">
  3. 根据上面的代码,使用你的gmail帐户和应用程序密码更新你的设置.py(不要使用你的普通gmail密码-关注@Murad farajov答案(

相关内容

最新更新