smtplib.SMTPAuthenticationError: (534, b'5.7.9 需要应用程序特定密码。了解更多信息 5.7.9 https://support.google.com/mail/?p=InvalidSecondFactor h22sm15927247pfv.25 - gsmtp')
环境变量已设置但不起作用(即使它是精确值)。
export EMAIL_USER='[email protected]'
os.environ.get('EMAIL_USER')
和邮件值字符串是否为 True我正在尝试将其导入配置文件中,当我使用编码值时,它工作正常,但是使用我使用
os.environ.get('EMAIL_USER')
,它会停止工作并抛出此错误。
应用密码是一个 16 位数字的密码,允许安全性较低的应用或设备访问您的 Google 帐户。应用程序密码只能与启用了两步验证的帐户一起使用。
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文件。 除非发生这种情况,环境将不会注册它。 即使在重新启动后,使用 python 控制台设置环境变量也不起作用。
感谢@Muhammadalive 的回答和另一个问题,我成功了。我将复制下面的代码,因为有些人对社区机器人请求投了赞成票,以获得更明确的答案。
我目前正在开发中。如果部署后我认为有必要更新答案,我会回来编辑它。
我使用 python-de Couple 来避免在我的 settings.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: '[email protected]'
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 = [email protected]
EMAIL_HOST_PASSWORD = twexamplexpcuhuy