2012-08-16 3 views
2

Je ne peux pas envoyer un e-mail en python avec un corps en tant que courrier électronique multipart. Tout ce que j'ai essayé a abouti à tout le contenu en pièces jointes, et je ne peux pas obtenir le texte ou le code HTML pour apparaître dans le corps.Python Emailing Multipart avec le contenu du corps

msg = MIMEMultipart() 
if msg_mime_type == 'text' or not msg_mime_type: 
    new_body = MIMEText(body, 'text') 
elif msg_mime_type == 'image': 
    new_body = MIMEImage(body) 
elif msg_mime_type == 'html': 
    new_body = MIMEText(body, 'html') 
new_body.add_header('Content-Disposition', 'inline', filename='body') 
msg.set_payload(new_body) #also tried msg.attach(new_body) 

J'ai besoin d'utiliser un Multipart afin que je puisse ajouter des pièces jointes, mais j'ai gardé ce code pour la simplicité.

Répondre

5

Vous devez spécifier que les pièces sont des alternatives l'une de l'autre, par ex. le type MIME multipart/alternative:

msg = MIMEMultipart('alternative') 

La valeur par défaut est mixed; Voir le email library examples. Notez que pour créer un e-mail avec les deux pièces jointes et une autre option (HTML/CSS), vous devez disposer d'un conteneur multipart/related de niveau supérieur contenant les pièces alternative en tant que première entrée.

+0

maintenant yahoo enregistré aucun corps ou pièces jointes, gmail l'a enregistré en pièce jointe –

+0

@ notbad.jpeg: vous aurez besoin d'imbriquer des parties MIME; le message principal est multipart/alternative (le lecteur peut choisir le HTML ou le texte) mais le reste des messages doit faire partie de votre email mais ne fait pas partie des alternatives. –

+0

ouais cela ne m'a pas aidé du tout, il m'a vraiment confondu plus, peut-être que vous pourriez poster un extrait de code plus grand? –

Questions connexes