在Heroku上使用Django时出现SMTP身份验证错误

6
我正在尝试使用gmail smtp服务器从我的django应用程序发送电子邮件。当我在本地服务器上运行应用程序时,电子邮件会被发送成功。但是在heroku上使用时,我遇到了SMTP身份验证错误。

Traceback - 链接

settings.py -

# Email configuration.

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '***************@gmail.com'
EMAIL_HOST_PASSWORD = '************'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = '******************@gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

我已经重新检查了账户密码,同时我也已经在我的谷歌账户中启用不安全应用的访问权限。但是我仍然收到这个错误提示。

3个回答

12

禁用客户端CAPTCHA

如果未使用双重身份验证并且已经确认Python源代码中的凭据是正确的,请按照以下步骤操作:
  1. 在浏览器中登录到gmail
  2. 导航到DisplayUnclockCaptcha页面。
  3. 点击继续按钮,你会看到以下消息:
    帐户访问已启用 请尝试从您的新设备或应用程序再次登录Google帐户。

  4. 运行您的Python脚本 - 您的登录尝试应该成功。


虽然我知道如何使其工作,但是当错误弹出时,谷歌还会发送一封安全电子邮件,提到了来自不安全应用程序的登录尝试。这是否意味着它在HTTPS下可以完美运行? - Irfan wani
2
我还想补充一下你的回答,即DisplayUnlockCapatcha仅保持活动状态10分钟,即每隔10分钟您需要启用访问。 - Irfan wani

2
尝试使用sendgrid,因为gmail smtp有一些问题。我也无法使用gmail smtp。但是使用sendgrid完美地解决了这个问题。而且对于基本用途,这也是免费的。
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'username'
EMAIL_HOST_PASSWORD = 'userpassword'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'asdf@example.com'

用户名和用户密码将是来自SendGrid的吗? - Anurag-Sharma
是的,只需创建帐户并使用相同的用户名和密码即可。 - Astik Anand
这将是我的Gmail邮箱ID吗?因为在创建SendGrid帐户时,我提供了这个邮箱。 - Anurag-Sharma
虽然这不是必须的,但你可以在那里填写任何电子邮件地址。对我来说,我已经填写了 support@kodefork.com。如果发送者没有被指定,将使用该地址发送邮件。 - Astik Anand
如果您想要自定义电子邮件地址,可以前往Zoho,他们提供25个免费的自定义电子邮件服务。 - Astik Anand
显示剩余5条评论

0

将邮件(@gmail.com)域更改为您公司的域名,然后它就可以工作了。我们不能使用来自邮件域@ gmail.com,DEFAULT_FROM_EMAIL ='******************@yourcompanydomain.com'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接