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

时间:2018-08-22 11:58:16

标签: python django django-email

我正在尝试为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为什么不发送此电子邮件?

2 个答案:

答案 0 :(得分:0)

如果您正在学习本教程,则可能已经配置了控制台电子邮件后端,这仅对调试有用-在您的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

答案 1 :(得分:0)

如果使用的是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步)