Good question - came up on the course yesterday and all the examples I could find were longwinded or obfursacted to avoid them abusing the email addresses of the people named.
At the risk of getting lots of people trying this out and filling my mail box, here is a sample piece of code that emails grom graham@wellho.net to graham@sheepbingo.co.uk in Python, with the subject line "greeting from here" and the body just saying "Hello World".
# Emailing from Python
import smtplib
from email.MIMEText import MIMEText
# Set up a MIMEText object (it's a dictionary)
msg = MIMEText("Hello World")
# You can use add_header or set headers directly ...
msg['Subject'] = 'greeting from here'
# Following headers are useful to show the email correctly
# in your recipient's email box, and to avoid being marked
# as spam. They are NOT essential to the snemail call later
msg['From'] = "Graham J Ellis "
msg['Reply-to'] = "Graham Ellis "
msg['To'] = "graham@sheepbingo.co.uk"
# Establish an SMTP object and connect to your mail server
s = smtplib.SMTP()
s.connect("www.wellho.net")
# Send the email - real from, real to, extra headers and content ...
s.sendmail("graham@wellho.net","graham@sheepbingo.co.uk", msg.as_string())
s.close()
In our case, the machine I'm running the script on is not a mail server, so I've connected to a machine that is in the
connect method. And, before you try it out, please note that our outgoing mail server is not an open relay. In other words you will need to change that to your own outgoing mail machine - it won't work for you one mine.
(written 2007-01-18)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y115 - Additional Python Facilities [183] The elegance of Python - (2005-01-19)
[208] Examples - Gadfly, NI Number, and Tcl to C interface - (2005-02-10)
[239] What and why for the epoch - (2005-03-08)
[463] Splitting the difference - (2005-10-13)
[663] Python to MySQL - (2006-03-31)
[672] Keeping your regular expressions simple - (2006-04-05)
[753] Python 3000 - the next generation - (2006-06-09)
[901] Python - listing out the contents of all variables - (2006-10-21)
[1136] Buffering output - why it is done and issues raised in Tcl, Perl, Python and PHP - (2007-04-06)
[1149] Turning objects into something you can store - Pickling (Python) - (2007-04-15)
[1305] Regular expressions made easy - building from components - (2007-08-16)
[1336] Ignore case in Regular Expression - (2007-09-08)
[1337] A series of tyre damages - (2007-09-08)
[1876] Python Regular Expressions - (2008-11-08)
[2407] Testing code in Python - doctest, unittest and others - (2009-09-16)
[2435] Serialization - storing and reloading objects - (2009-10-04)
[2462] Python - how it saves on compile time - (2009-10-20)
[2655] Python - what is going on around me? - (2010-02-28)
[2721] Regular Expressions in Python - (2010-04-14)
[2745] Connecting Python to sqlite and MySQL databases - (2010-04-28)
[2746] Model - View - Controller demo, Sqlite - Python 3 - Qt4 - (2010-04-29)
[2764] Python decorators - your own, staticmethod and classmethod - (2010-05-14)
[2765] Running operating system commands from your Python program - (2010-05-14)
[2786] Factory methods and SqLite in use in a Python teaching example - (2010-05-29)
[2790] Joining a MySQL table from within a Python program - (2010-06-02)
[3089] Python regular expressions - repeating, splitting, lookahead and lookbehind - (2010-12-17)
[3442] A demonstration of how many Python facilities work together - (2011-09-16)
[3469] Teaching dilemma - old tricks and techniques, or recent enhancements? - (2011-10-08)
[4085] JSON from Python - first principles, easy example - (2013-05-13)
[4211] Handling JSON in Python (and a csv, marshall and pickle comparison) - (2013-11-16)
[4298] Python - an interesting application - (2014-09-18)
[4439] Json is the new marshall, pickle and cPickle / Python - (2015-02-22)
[4451] Running an operating system command from your Python program - the new way with the subprocess module - (2015-03-06)
[4536] Json load from URL, recursive display, Python 3.4 - (2015-10-14)
[4593] Command line parameter handling in Python via the argparse module - (2015-12-08)
[4709] Some gems from Intermediate Python - (2016-10-30)
Some other Articles
Maintainable code - some positive adviceBounce, bounce, bounceBang! Train campaign hits homeCall for appropriate train services - Swindon, Bristol, Bath, West Wilts, Severn Beach etcSending an email from PythonNested exceptions in PythonLearnt in London - Ruby, Martini, Coral and the CoreWhat the customer is looking for - effective trainingKnow to the policeImpact Engineering and Backscatter