Today I came across a need to test SMTP outgoing emails from the web application I was working on. I was working on a simple forgotten password form that sent a password reset url to the registered user’s email address. I didn’t need to test that the email looked OK, I just needed to test the content.
Instead of setting up Exim or Sendmail and configuring it to redirect mail to my account I discovered that you can use a Python one liner to output all SMTP to the command line. Here’s how it’s done:
sudo python -m smtpd -n -c DebuggingServer localhost:25
The sudo is needed as you can’t bind to a port number lower than 1024 as a normal user.
Based in Staffordshire, UK