请求时 Django 没有发邮件怎么办?

What should I do if Django doesn't send any email when I requested?

我正在尝试为 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 mail,您需要启用2FA(2 Factor Authentication) 并进入应用程序密码设置。然后你可以生成应用程序密码,你必须像这样将密码放入 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 步)