Obtenir le corps du texte d'un e-mail à l'aide de python imap et logiciel de courriel
Je veux récupérer le corps (que du texte) des e-mails à l'aide de python imap et logiciel de courriel.
Que par ce Fil, je suis en utilisant le code suivant:
mail = email.message_from_string(email_body)
bodytext = mail.get_payload()[ 0 ].get_payload()
Si ça fonctionne pour certains cas, mais parfois je obtenir similaire à la réponse suivante
[<email.message.Message instance at 0x0206DCD8>, <email.message.Message instance at 0x0206D508>]
OriginalL'auteur biztiger | 2013-05-07
Vous devez vous connecter pour publier un commentaire.
Vous êtes en supposant que les messages ont une structure uniforme, avec un bien définis "partie principale". Ce n'est pas le cas; il y a peut être des messages avec une seule partie qui n'est pas une partie du texte (juste un "attachement" d'un fichier binaire, et rien d'autre) ou il peut être une plusieurs parties avec de multiples parties textuelles (ou, encore une fois, rien du tout) et même si il y a un seul, il n'a pas besoin d'être la première partie. En outre, il y a imbriquée multipartites (une ou plusieurs parties est un autre message MIME, de manière récursive).
Dans beaucoup de mots, vous devez inspecter la structure MIME, puis décider quelle partie(s) sont pertinents pour votre application. Si vous ne recevrez que les messages à partir d'un assez statique, petit ensemble de clients, vous pouvez être en mesure de couper quelques virages (au moins jusqu'à la prochaine mise à jour de Microsoft Peste frappe), mais en général, il n'est tout simplement pas une hiérarchie d'aucune sorte, juste une collection de (pas toujours directement liés) pièces tout aussi important.
Python 3.6+ a une nouvelle
email
bibliothèque avec une méthodeget_body
qui tente de deviner le "corps principal de la partie" pour vous.OriginalL'auteur tripleee
Le principal problème dans mon cas est que a répondu ou a transmis le message affiché comme instance de message dans le bodytext.
Résolu mon problème en utilisant le code suivant:
OriginalL'auteur biztiger
Peut-être ce post (de la mine) peut être de l'aide. - Je recevoir un Bulletin d'information avec les prix de différents types de pétrole aux états-unis. Je chercher de l'e-mail dans gmail avec un motif donné pour le titre, puis-je extraire les prix dans le corps du mail à l'aide de regex. J'ai donc pour accéder au corps du mail pour le dernier n e-mails dont le titre observer motif donné.
Je suis en utilisant
email.message_from_string()
aussi:msg = email.message_from_string(response_part[1])
donc peut-être qu'il vous donne un exemple concret de la façon d'utiliser les méthodes de cette lib python.
OriginalL'auteur kiriloff
Fondamentalement, vous devez parcourir les différents text/plain (ou texte/html) les parties du message à faire pour le corps - il n'y a absolument aucune garantie sur la position qui est la partie du corps! (si il y a la convention pour être l'un des premiers... dans la plupart des cas... sans doute... 🙂
Que je ne veux pas dupliquer le contenu, veuillez consulter ma réponse de tout à fait semblable question ici, et de l'adapter en fonction de vos besoins.
OriginalL'auteur Todor Minakov