【发布时间】:2018-06-13 02:13:51
【问题描述】:
我有一个奇怪的问题。每当我尝试从TestCase 发送电子邮件时,我都收不到它。但是,我在 Django shell 上尝试了相同的方法,它成功发送了电子邮件。这是我的TestCase:
class DefaultEmailTestCase(TestCase):
def test_send(self):
msg = EmailMessage(
"Test Message",
"This is a test message.",
to=["foo@bar.com", "foo@baz.com"]
)
val = msg.send()
self.assertEqual(val, 1)
它成功完成,但我没有收到电子邮件。这是我在 Django 的 shell 上所做的:
from django.core.mail import EmailMessage
receivers = ["foo@bar.com", "foo@baz.com"]
msg = EmailMessage(
"Test Message",
"This is a test message."
to=receivers
)
msg.send()
我成功收到了消息。
这是我按顺序排列的设置(带有虚拟信息):
EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
EMAIL_HOST = "foo.bar.com"
EMAIL_PORT = 465 # This is the port that my email provider uses.
EMAIL_HOST_USER = "foo@bar.com"
EMAIL_HOST_PASSWORD = "123456"
# EMAIL_USE_TLS = True # Django raised an error saying that I cannot use both TLS and SSL. So I commented it out.
EMAIL_USE_SSL = True
DEFAULT_FROM_EMAIL = "Bar Testing Message <foo@bar.com>"
我也将django.core.mail.backends.smtp.EmailBackend 用作EMAIL_BACKEND,但没有运气。
测试用例和 Django shell 都使用我的开发设置,所以它们是一样的。我不知道为什么这不起作用。
提前致谢。
环境
- Python 3.6.5
- Django 2.0.4
【问题讨论】: