OVH Cloud OVH Cloud

Pas de email.MIMEattach ?

2 réponses
Avatar
Bruno Piguet
Bonjour,

Je souhaite envoyer, par programme, des e-mail avec un fichier .pdf en
pièce jointe. Rassurez vous, c'est pas pour spam.

Pour construire le message, je pourrais écrire des suite de chaînes "à
la main", et utiliser base64.encode(open('toto.pdf', 'rb'), txt_pj), mais
il me semble préférable d'utiliser des chose de plus haut niveaux.
Dans le module email, on trouve email.MIMEAudio.MIMIAudio,
email.MIMEImage.MIMIImage, mais pas d'objet générique pour les
pièces-jointes. J'aurais bien immaginé un : email.MIMEAttach.MIMEAttach
(open('toto.pdf', 'rb'), "application/pdf', base64)

Pour ça, les MIMEAudio et MIMEImage me semblent trop spécialisés, et
MIMEBase/MIMEText trop général. Est-ce moi qui n'ai pas compris
l'organisation des email.MIME*, ou email.MIMEAttach manque vraiment pour
avoir qqchose de complet ?

Bruno.

2 réponses

Avatar
Bruno Piguet
Je me réponds à moi-même :

Un des exemples donnés dans la Python Library Reference (paragraphe
12.2.13 dans la version que j'ai consultée) donne une solution, pas
complètement automatique, mais relativement courte, quand même :

fp = open(path, 'rb')
msg = MIMEBase(maintype, subtype)
msg.set_payload(fp.read())
fp.close()
# Encode the payload using Base64
Encoders.encode_base64(msg)
msg.add_header('Content-Disposition', 'attachment', filename=filename)

Ceci dit, je ne comprend toujours pas pourquoi les images et la musique
sont particularisées par rapport aux autres contenus possibles.

Bruno.
Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !


je ne comprend toujours pas pourquoi les images et la musique sont
particularisées par rapport aux autres contenus possibles




C'est parce que c'est défini comme ça dans les RFC (ce qui montre leur
limite d'évolutivité).



Sinon, pour des besoins similaires, j'ai dû faire mes propres fonctions de
"payloading", en gérant moi-même les "cid:", car, avec les librairies
Python, j'ai eu quelques déboires (de détails), genre caractères ajoutés, ou
caractères intempestivement convertis en HTML.



@-salutations
--
Michel Claveau