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