如果 Django 在我请求时没有发送任何电子邮件,我该怎么办?



我试图为django.contrib.auth.views.password_reset制作自定义密码重置视图。

我自己做的(当然,我看到一些教程文章。
但是当我向开发服务器请求密码重置表单时,
它显示如下(在开发服务器日志上(:

Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: Hello
From: <My email address> (Outlook)
To: <My another email address> (GMail)
Date: Wed, 22 Aug 2018 11:44:55 -0000
Message-ID: <20180822114455.3320.17387@Yeonhos-MacBook-Pro.local>
I am testing Django EmailMessage Class

但是,它不会向标记为My another email address的地址发送任何内容。
谁能帮我?为什么 Django 不发送这封电子邮件?

如果您正在按照教程进行操作,那么您可能已经配置了控制台电子邮件后端,这仅对调试有用 - 在 settings.py 中查找此行:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

要实际发送邮件,您必须将 Django 配置为使用 SMTP 后端,并且您还需要允许您访问的邮件服务器的详细信息。要使用 SMTP 后端,请将上面的行替换为以下内容:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = '...'  # Your mailserver host
EMAIL_HOST_USER = '...'  # Your mailserver user, if required
EMAIL_HOST_PASSWORD = '...'  # Your mailserver password, if required

如果您使用的是G邮件,则需要启用2FA(2因素身份验证(并转到应用密码设置。然后你可以生成应用密码,你必须把这个密码放到 Django settings.py 中,就像这样:

#settings.py
SERVER_EMAIL = DEFAULT_FROM_EMAIL = EMAIL_HOST_USER = 'YOUR_GMAIL_ADDRESS'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_PASSWORD = 'YOUR_APP_PASSWORD'

它对我有用:)
请参阅本文了解如何生成应用程序密码并将其用于 django:https://kinsta.com/knowledgebase/free-smtp-server/

(您可以跳过步骤 4(

最新更新