Django 邮件未发送,但在控制台中执行

Django email not sent, but executed in the console

我有一个密码更改信号发送器。当我使用 endopint 时,它应该发送一封电子邮件,但它只在控制台中发送。

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = '465'
EMAIL_HOST_USER = "*******"
EMAIL_HOST_PASSWORD = "******"
EMAIL_USE_SSL = True
EMAIL_USE_TLS = False
DEFAULT_FROM_EMAIL = "*******"

控制台成功输出:

Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: =?utf-8?b?0JTQvtCx0YDQviDQv9C+0LbQsNC70L7QstCw0YLRjCDQvdCwIHNpenpl?=
From: ********
To: kabiljanz0301@gmail.com
Date: Sat, 13 Feb 2021 16:30:12 -0000
Message-ID: 
 <161323381275.176437.7948111011454591000@kabiljan-Lenovo-IdeaPad-S340-14API>

/user/password_reset/?token=d2883b6ae18eb357ac1
-------------------------------------------------------------------------------

可能是什么问题?

将“EMAIL_BACKEND”更改为此

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

SMTP 后端¶

SMTP后端是Django继承的默认配置。如果您想明确指定它,请将以下内容放入您的设置中:

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

如果未指定,默认超时将由 socket.getdefaulttimeout() 提供,默认为 None(无超时) .

控制台后端¶

控制台后端不发送真正的电子邮件,而是将发送到标准输出的电子邮件写入。默认情况下,控制台后端写入标准输出。您可以通过在构建连接时提供 stream 关​​键字参数来使用不同的类似流的对象。

要指定此后端,请将以下内容放入您的设置中:

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

此后端不适用于生产 - 它是为了方便开发而提供的。

您正在设置中使用控制台后端。用 SMTP 后端替换控制台后端。