[ACCEPTED]-How can I know if a email is sent correctly with Django/Python?-django
When running unit tests emails are stored 7 as EmailMessage objects in a list at
django.core.mail.outbox you can then perform 6 any checks you want in your test class. Below 5 is an example from 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.', 'email@example.com', ['firstname.lastname@example.org'], 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.subject, 'Subject here')
Alternatively if you 4 just want to visually check the contents 3 of the email during development you can 2 set the
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
and then look at you console.
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' EMAIL_FILE_PATH = '/tmp/app-messages' # change this to a proper location
then check the file.
There is no way to check that a mail has 5 actually been received. This is not because 4 of a failing in Django, but a consequence 3 of the way email works.
If you need some 2 form of definite delivery confirmation, you 1 need to use something other than email.
In case of error, send_mail should raise an exception. The 3 fail_silently argument makes possible to 2 ignore the error. Did you enable this option 1 by mistake?
I hope it helps
More Related questions