objectif
Créer un message MIME texte/HTML avec pièces jointes (sans envoi).
code minimal
from email.message import EmailMessage
msg = EmailMessage()
msg["From"] = "noreply@data.pm"
msg["To"] = "user@data.pm"
msg["Subject"] = "Bonjour"
msg.set_content("Texte brut")
msg.add_alternative("<p>HTML</p>", subtype="html")
print(msg.is_multipart()) # attendu: True
utilisation
from email.message import EmailMessage
msg = EmailMessage()
msg["To"] = "u@data.pm"; msg["From"] = "n@data.pm"; msg["Subject"] = "x"
msg.set_content("hello")
print("Subject" in msg.as_string())
variante(s) utile(s)
from email.message import EmailMessage
msg = EmailMessage(); msg.set_content("data")
msg.add_attachment(b"bin", maintype="application", subtype="octet-stream", filename="d.bin")
print(any(p.get_filename() == "d.bin" for p in msg.iter_attachments()))
notes
- EmailMessage simplifie la composition MIME moderne.
- Encodez en UTF-8 et évitez d’insérer des données sensibles dans les headers.