Nov 16, 2011

Python: Debugging/Developing SMTP mail things

You often have 'situations' when you developing Contact forms, or any other forms which have to send emails with python. You have to install or have working SMTP server on your Dev machine like say 'monstrous' Sendmail or something like it. It can cause errors in Django/Python like [Errno 61] Connection refused:


[Errno 61] Connection refused


But python has it handled for you. Python's standard distribution has a test SMTP server that you can test sending mail with. It actually does not sends anything. But you can examine outgoing email message like you've actually send it.
Type something like:


python -m smtpd -n -c DebuggingServer localhost:1025


It will start a command line server on this console and it will print everything your server should send through SMTP.
Also make sure to modify mail sending code to use your non standart port number like so:


server = smtplib.SMTP(SERVER, 1025)
server.sendmail(FROM, TO, message)
server.quit()


Or with 'sudo' (if you have admin permissions) you can start a test SMTP server like you are actually using sendmail simply changing port number of your server.  Or just change 1025 to 25 (SMTP default port) if you are working under root permissions user. Like so:


sudo python -m smtpd -n -c DebuggingServer localhost:25


Found interesting? Have a better/simpler way or I am wrong?
Please drom a comment here. 

4 comments:

  1. When i run the command i get nothing..just blank..what else has to be done

    ReplyDelete
    Replies
    1. Send en email 127.0.0.1 server... It will be shown on this blank now.

      Delete
  2. I got the message in the terminal but didnt get any mail.need your help

    ReplyDelete
  3. If you want to read html emails or simply se your email in a decent interface, you can use PyLocalSmtp, a web interface that uses the core python DebuggingServer https://pypi.python.org/pypi/pylocalsmtp/1.0.0

    ReplyDelete