IMAP obtenir le nom de l'expéditeur et le corps du texte?
Je suis en utilisant ce code:
import imaplib
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login(myusername, mypassword)
mail.list()
# Out: list of "folders" aka labels in gmail.
mail.select("inbox") # connect to inbox.
result, data = mail.search(None, "ALL")
ids = data[0] # data is a list.
id_list = ids.split() # ids is a space separated string
latest_email_id = id_list[-1] # get the latest
result, data = mail.fetch(latest_email_id, "(RFC822)") # fetch the email body (RFC822) for the given ID
raw_email = data[0][1] # here's the body, which is raw text of the whole email
# including headers and alternate payloads
print raw_email
et ça fonctionne, sauf que, quand j'ai l'impression raw_email
elle renvoie un tas d'informations supplémentaires, comment puis-je, d'analyser, pour dire, les informations supplémentaires et obtenez seulement la forme et le corps du texte?
OriginalL'auteur Sam Tubb | 2013-10-23
Vous devez vous connecter pour publier un commentaire.
Python e-mail paquet est probablement un bon endroit pour commencer.
Qui devrait faire de vous demander de vous demander, si, quand un e-mail a plusieurs pièces (pièces jointes, le texte et les versions HTML du corps, etc.) les choses sont un peu plus compliquées.
Dans ce cas,
msg.is_multipart()
retournera True etmsg.get_payload()
, vous obtiendrez une liste au lieu d'une chaîne. Il y a beaucoup plus d'informations dans le e-mail.message de la documentation.Alternativement, plutôt que de l'analyse de la crue RFC822 format de message qui pourrait être très grande, si l'email contient des pièces jointes, vous pouvez simplement demander au serveur IMAP pour les informations que vous souhaitez. La modification de votre
mail.fetch
ligne:Voudrais juste demander (et de retour) l' De ligne de l'e-mail depuis le serveur. De même, le réglage de la deuxième paramètre à
"(UID BODY[TEXT])"
serait de retour le corps de l'email. RFC2060 a une liste de paramètres qui doivent être valables ici.OriginalL'auteur 1133261