Any tips on testing email sending? Other than maybe creating a gmail account, especially for receiving those emails?
I would like to, maybe, store the emails locally, within a folder as they are sent.
Any tips on testing email sending? Other than maybe creating a gmail account, especially for receiving those emails?
I would like to, maybe, store the emails locally, within a folder as they are sent.
Use MailHog
Also, it has a component called Jim, the MailHog Chaos Monkey, which enables you to test sending emails with various problems happening:
Read more about it here.
(Unlike original mailcatcher, which failed on me when sending emails with emoji, encoded in UTF-8 and it WASN'T really fixed in the current release, MailHog just works.)
For any project that doesn't require sending attachments, I use django-mailer, which has the benefit of all outbound emails ending up in a queue until I trigger their sending, and even after they've been sent, they are then logged - all of which is visible in the Admin, making it easy to quickly check what you emailing code is trying to fire off into the intertubes.
My solution is write content to a html file. This way can help you see how email look like. I leave it here htmlfilebased.EmailBackend.
Other tip: You can use django email template editor which can help you edit your email template with zero inline css.
Why not start your own really simple SMTP Server by inherit from
smtpd.SMTPServer
andthreading.Thread
:process_message is called whenever your SMTP Server receive a mail request, you can do whatever you want there.
In the testing code, do something like this:
Just remember to
close()
theasyncore.dispatcher
by callingsmtp_server.close()
to end the asyncore loop(stop the server from listening).Django test framework has some built in helpers to aid you with testing e-mail service.
Example from docs (short version):
Using the file backend works well, but I find it a little a cumbersome to poke around the filesystem to look at emails. You could use mailcatcher, https://github.com/sj26/mailcatcher, to capture emails and display them in a web UI.
To use mailcatcher with Django you'll need to add something like the following to your settings.py: