Tags Python

Just a short notice to show how simple it is to send mail from Python using the SMTP module. Note: you must have an accessible SMTP server running somewhere. I have one on my domain, but word on the street says that if you ask nicely, your ISP can provide you with one.

Anyway, here is the code:

from smtplib import SMTP
import datetime

debuglevel = 0

smtp = SMTP()
smtp.set_debuglevel(debuglevel)
smtp.connect('YOUR.MAIL.SERVER', 26)
smtp.login('USERNAME@DOMAIN', 'PASSWORD')

from_addr = "John Doe <john@doe.net>"
to_addr = "foo@bar.com"

subj = "hello"
date = datetime.datetime.now().strftime( "%d/%m/%Y %H:%M" )

message_text = "Hello\\nThis is a mail from your server\\n\\nBye\\n"

msg = "From: %s\\nTo: %s\\nSubject: %s\\nDate: %s\\n\\n%s" \
        % ( from_addr, to_addr, subj, date, message_text )

smtp.sendmail(from_addr, to_addr, msg)
smtp.quit()

Some notes:

  • You'll have to insert your mail server and SMTP port. Note that the port can also be 25 (or any other, if you've configured the server appropriately)
  • At least on my server, the username must be the full email address
  • The message must contain all these fields to be accepted
  • Set debuglevel to 1 to see lots of insightful debugging information from the module