【发布时间】:2011-07-19 11:46:20
【问题描述】:
我需要知道是否正确发送了一封电子邮件以执行多项操作,但该函数始终返回 True。
有什么想法吗?
谢谢。
【问题讨论】:
-
你写过代码吗?如果有请分享。这样我们就可以从那里帮助您。
我需要知道是否正确发送了一封电子邮件以执行多项操作,但该函数始终返回 True。
有什么想法吗?
谢谢。
【问题讨论】:
如果出现错误,send_mail 应该引发异常。 fail_silently 参数可以忽略错误。您是否误启用了此选项?
希望对你有帮助
【讨论】:
无法检查是否确实收到了邮件。这不是因为 Django 失败,而是电子邮件工作方式的结果。
如果您需要某种形式的明确送达确认,则需要使用电子邮件以外的其他方式。
【讨论】:
在运行单元测试时,电子邮件将作为EmailMessage 对象存储在django.core.mail.outbox 的列表中,然后您可以在测试类中执行您想要的任何检查。以下是来自django's docs 的示例。
from django.core import mail
from django.test import TestCase
class EmailTest(TestCase):
def test_send_email(self):
# Send message.
mail.send_mail('Subject here', 'Here is the message.',
'from@example.com', ['to@example.com'],
fail_silently=False)
# Test that one message has been sent.
self.assertEqual(len(mail.outbox), 1)
# Verify that the subject of the first message is correct.
self.assertEqual(mail.outbox[0].subject, 'Subject here')
或者,如果您只是想在开发过程中直观地检查电子邮件的内容,您可以将EMAIL_BACKEND 设置为:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
然后看看你的控制台。
或
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
EMAIL_FILE_PATH = '/tmp/app-messages' # change this to a proper location
然后检查文件。
【讨论】: