Here is the code that answers my question. It comes from the author of the ReconcileCompress script. The only issue I have encountered is that the entire message comes as one paragraph. I haven't yet taken the time to see about breaking it into separate parargraphs to suit my purpose.msgText = compressHeadermsgText += '<p><b>%s</b><p>' % (compressLog) #using string substitution to insert my string variable between the html tags.msgText += reconcileHeadermsgText += '<p><i>%s</i><p>' % (reconcileLog)My test script below:============================compressHeader = 'Compress Results'compressLog = 'Compress was successful'reconcileHeader = 'Reconcile Results'reconcileLog = 'Reconcile was successful'import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText# me == my email address# you == recipient's email addressme = "me@esri.com"you = "you@esri.com"# Create message container - the correct MIME type is multipart/alternative.msg = MIMEMultipart('alternative')msg['Subject'] = "Reconcile and Post"msg['From'] = memsg['To'] = you# Create the body of the message (a plain-text and an HTML version).msgText = compressHeadermsgText += '<p><b>%s</b><p>' % (compressLog)msgText += reconcileHeadermsgText += '<p><i>%s</i><p>' % (reconcileLog)# Record the MIME types of both parts - text/plain and text/html.part1 = MIMEText(msgText, 'html')# Attach parts into message container.# According to RFC 2046, the last part of a multipart message, in this case# the HTML message, is best and preferred.msg.attach(part1)# Send the message via local SMTP server.s = smtplib.SMTP('mailserver')# sendmail function takes 3 arguments: sender's address, recipient's address# and message to send - here it is sent as one string.s.sendmail(me, you, msg.as_string())s.quit()============================