This weekend I open-sourced a script called notifymail which I have been using for the past few years to send myself emails from automated scripts, particularly Python scripts.
It is very easy to configure
notifymail for the first time:
$ pip install notifymail $ notifymail.py --setup SMTP Server Hostname: smtp.gmail.com SMTP Server Port : 587 SMTP Server Uses TLS (y/n) [n]: yes SMTP Username: email@example.com SMTP Password: ******** From Address [firstname.lastname@example.org]: email@example.com From Name (optional) : notifymail To Address: firstname.lastname@example.org Verifying connection to SMTP server... OK
Check your mail provider’s documentation to get the SMTP settings mentioned above. For example I made an internet search for “gmail SMTP settings” to find Gmail’s SMTP settings:
Once you have
notifymail installed, you can send an email to yourself in a Python script with as little code as:
import notifymail notifymail.send('Subject', 'Hello World', from_name='greeting_script')
Or you can invoke
notifymail from the command line:
$ echo "Hello World" | notifymail.py -s "Subject"
Full documentation is available on the notifymail project page.
I reinvented my own wheel to send email principally because of the poor documentation of other alternatives:
postfix were so complicated I couldn’t figure out how to set them up.
ssmtp didn’t work after I tried to configure it and there was no good documentation to help me debug why it wasn’t working.
For reference, here’s some information for setting up those alternatives.
I have a script called
heartbeat that periodically attempts to connect to all of my servers via SSH. If it cannot connect to a server it sends me an email with
notifymail. If it cannot access email it displays a sticky Growl notification locally.
I have another script called
meetupfilter that tracks incoming “New Meetup Group” emails from Meetup. It waits until all such announced groups have at least 3 events on their calendar before sending me a notification at my personal email with
notifymail. That way I don’t hear about Meetup groups that appear but then fizzle out immediately, which is a surprising number. I may open-source this script eventually if I hear there is interest.