1#!/usr/bin/env python3 2 3import smtplib 4 5from email.message import EmailMessage 6from email.headerregistry import Address 7from email.utils import make_msgid 8 9# Create the base text message. 10msg = EmailMessage() 11msg['Subject'] = "Ayons asperges pour le déjeuner" 12msg['From'] = Address("Pepé Le Pew", "pepe", "example.com") 13msg['To'] = (Address("Penelope Pussycat", "penelope", "example.com"), 14 Address("Fabrette Pussycat", "fabrette", "example.com")) 15msg.set_content("""\ 16Salut! 17 18Cela ressemble à un excellent recipie[1] déjeuner. 19 20[1] http://www.yummly.com/recipe/Roasted-Asparagus-Epicurious-203718 21 22--Pepé 23""") 24 25# Add the html version. This converts the message into a multipart/alternative 26# container, with the original text message as the first part and the new html 27# message as the second part. 28asparagus_cid = make_msgid() 29msg.add_alternative("""\ 30<html> 31 <head></head> 32 <body> 33 <p>Salut!</p> 34 <p>Cela ressemble à un excellent 35 <a href="http://www.yummly.com/recipe/Roasted-Asparagus-Epicurious-203718"> 36 recipie 37 </a> déjeuner. 38 </p> 39 <img src="cid:{asparagus_cid}" /> 40 </body> 41</html> 42""".format(asparagus_cid=asparagus_cid[1:-1]), subtype='html') 43# note that we needed to peel the <> off the msgid for use in the html. 44 45# Now add the related image to the html part. 46with open("roasted-asparagus.jpg", 'rb') as img: 47 msg.get_payload()[1].add_related(img.read(), 'image', 'jpeg', 48 cid=asparagus_cid) 49 50# Make a local copy of what we are going to send. 51with open('outgoing.msg', 'wb') as f: 52 f.write(bytes(msg)) 53 54# Send the message via local SMTP server. 55with smtplib.SMTP('localhost') as s: 56 s.send_message(msg) 57