17db96d56Sopenharmony_ci#!/usr/bin/env python3 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ciimport smtplib 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_cifrom email.message import EmailMessage 67db96d56Sopenharmony_cifrom email.headerregistry import Address 77db96d56Sopenharmony_cifrom email.utils import make_msgid 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci# Create the base text message. 107db96d56Sopenharmony_cimsg = EmailMessage() 117db96d56Sopenharmony_cimsg['Subject'] = "Ayons asperges pour le déjeuner" 127db96d56Sopenharmony_cimsg['From'] = Address("Pepé Le Pew", "pepe", "example.com") 137db96d56Sopenharmony_cimsg['To'] = (Address("Penelope Pussycat", "penelope", "example.com"), 147db96d56Sopenharmony_ci Address("Fabrette Pussycat", "fabrette", "example.com")) 157db96d56Sopenharmony_cimsg.set_content("""\ 167db96d56Sopenharmony_ciSalut! 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ciCela ressemble à un excellent recipie[1] déjeuner. 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci[1] http://www.yummly.com/recipe/Roasted-Asparagus-Epicurious-203718 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ci--Pepé 237db96d56Sopenharmony_ci""") 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci# Add the html version. This converts the message into a multipart/alternative 267db96d56Sopenharmony_ci# container, with the original text message as the first part and the new html 277db96d56Sopenharmony_ci# message as the second part. 287db96d56Sopenharmony_ciasparagus_cid = make_msgid() 297db96d56Sopenharmony_cimsg.add_alternative("""\ 307db96d56Sopenharmony_ci<html> 317db96d56Sopenharmony_ci <head></head> 327db96d56Sopenharmony_ci <body> 337db96d56Sopenharmony_ci <p>Salut!</p> 347db96d56Sopenharmony_ci <p>Cela ressemble à un excellent 357db96d56Sopenharmony_ci <a href="http://www.yummly.com/recipe/Roasted-Asparagus-Epicurious-203718"> 367db96d56Sopenharmony_ci recipie 377db96d56Sopenharmony_ci </a> déjeuner. 387db96d56Sopenharmony_ci </p> 397db96d56Sopenharmony_ci <img src="cid:{asparagus_cid}" /> 407db96d56Sopenharmony_ci </body> 417db96d56Sopenharmony_ci</html> 427db96d56Sopenharmony_ci""".format(asparagus_cid=asparagus_cid[1:-1]), subtype='html') 437db96d56Sopenharmony_ci# note that we needed to peel the <> off the msgid for use in the html. 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci# Now add the related image to the html part. 467db96d56Sopenharmony_ciwith open("roasted-asparagus.jpg", 'rb') as img: 477db96d56Sopenharmony_ci msg.get_payload()[1].add_related(img.read(), 'image', 'jpeg', 487db96d56Sopenharmony_ci cid=asparagus_cid) 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci# Make a local copy of what we are going to send. 517db96d56Sopenharmony_ciwith open('outgoing.msg', 'wb') as f: 527db96d56Sopenharmony_ci f.write(bytes(msg)) 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci# Send the message via local SMTP server. 557db96d56Sopenharmony_ciwith smtplib.SMTP('localhost') as s: 567db96d56Sopenharmony_ci s.send_message(msg) 57