python - Django 电子邮件未发送,但在控制台中执行
问题描述
我有一个密码更改信号的发件人。当我使用 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
-------------------------------------------------------------------------------
可能是什么问题呢?
解决方案
SMTP 后端¶
SMTP 后端是 Django 继承的默认配置。如果您想明确指定它,请将以下内容放入您的设置中:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
如果未指定,默认超时将是 socket.getdefaulttimeout() 提供的超时,默认为 None (no timeout) 。
控制台后端¶
控制台后端不会发送真正的电子邮件,而是将发送到标准输出的电子邮件写入。默认情况下,控制台后端写入标准输出。您可以通过在构造连接时提供 stream 关键字参数来使用不同的类流对象。
要指定此后端,请将以下内容放入您的设置中:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
此后端不适合在生产中使用 - 它是为了方便在开发期间使用而提供的。
您在设置中使用控制台后端。将控制台后端替换为 SMTP 后端。
推荐阅读
- windows - 如何在 Jupyter Notebook 中测量 CPU 时间
- python - python中有没有办法同时扩展数据框的行和列?
- python - ModuleNotFoundError:在 docker compose build 中没有命名模块
- java - 获取 SunCertPathBuilderException:无法找到请求目标的有效证书路径
- python - 按顺序附加到嵌套列表中的列表元素字典
- r - 指示是否可以在 R 中的另一个向量中找到一个元素
- c# - 如何在不知道警告 ID 的情况下禁用 Unity 中的警告?
- react-native - 在 react-native 中使用透明背景使子视图或文本视图滚动到 SVG 形状后面
- python-3.x - 在 win32c.xlPageField 中选择多个字段
- reactjs - react-dnd 在悬停功能中设置状态或道具