使用Gmail发送电子邮件可以在本地工作,但在heroku(django)上则不行



在本地发送电子邮件适用于以下 settings.py:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST_USER = os.environ.get("EMAIL_USER")
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_USER_PASSWORD")
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = os.environ.get("EMAIL_USER")

但是,当我在 Heroku 上实时尝试此操作时,出现此错误:

SMTPSenderRefused at /password_reset/
(530, b'5.7.0 Authentication Required. Learn more atn5.7.0  https://support.google.com/mail/?p=WantAuthError p80sm1777250qke.19 - gsmtp', 'None')

有谁知道问题是什么以及如何纠正它?

谢谢!

我不知道你是否已经找到了解决方案。我最近确实遇到了同样的问题。我实际上寻求并寻求帮助。

  1. 首先,您需要向您的Google帐户授予对安全性较低的应用程序的访问权限(我相信您已经这样做了,因为您提到它可以在本地工作。

  2. 测试Google是否没有自动关闭对安全性较低的应用程序的访问(如果不是这种情况(:您需要通过以下方式清理验证码: https://accounts.google.com/DisplayUnlockCaptcha

详情请见:https://support.google.com/mail/thread/32840224?hl=en

  1. 记得把环境变量也放在 Heroku 上。

祝你好运。

我的英语不是最好的,我会尝试解释什么对我有用。 所以我尝试了这些解决方案,但没有奏效:

  1. https://accounts.google.com/DisplayUnlockCaptcha ,
  2. 授予对安全性较低的应用程序的访问权限
  3. 为安全性较低的应用创建应用专用密码
  4. 环境变量在 Python 中工作
  5. 密码或电子邮件没有拼写错误

解决 方案

更改与 settings.py 中相同的环境变量的名称 所以而不是做EMAIL_HOST_USER = os.environ.get("EMAIL_USER"(

更改为

EMAIL_HOST_USER = os.environ.get("EMAIL_HOST_USER"(您的密码也是如此。

在我做上面的解决方案之前,我尝试过使用简单的字符串并且也可以工作EMAIL_HOST_USER = "您的电子邮件">EMAIL_HOST_PASSWORD = "密码">

在我做完解决方案后,我必须做 1( https://accounts.google.com/DisplayUnlockCaptcha

最新更新