Python imaplib extraction de corps emails gmail
Je lire ce déjà et a écrit ce script pour récupérer le corps des e-mails dans certains boîte mail dont le titre commence par '$' et est envoyé par certaines expéditeur.
import email, getpass, imaplib, os
detach_dir = "F:\PYTHONPROJECTS" # where you will save attachments
user = raw_input("Enter your GMail username --> ")
pwd = getpass.getpass("Enter your password --> ")
# connect to the gmail imap server
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login(user, pwd)
m.select("PETROLEUM") # here you a can choose a mail box like INBOX instead
# use m.list() to get all the mailboxes
resp, items = m.search(None, '(FROM "[email protected]")')
items = items[0].split() # getting the mails id
my_msg = [] # store relevant msgs here in please
msg_cnt = 0
break_ = False
for emailid in items[::-1]:
resp, data = m.fetch(emailid, "(RFC822)")
if ( break_ ):
break
for response_part in data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1])
varSubject = msg['subject']
if varSubject[0] == '$':
msg_cnt += 1
my_msg.append(msg)
print msg_cnt
print email.message_from_string(response_part[1])
if ( msg_cnt == 5 ):
break_ = True
si j'ai l'impression email.message_from_string(response_part[1])
, je peux voir qu'il contient des informations (en-tête, de, à, date...), le texte intégral du corps. Mais, je ne peux pas récupérer le corps lui-même. email.message_from_string(response_part[0])
imprime mails ID, et email.message_from_string(response_part[2])
est hors de portée. email.message_from_string(response_part[1][0])
ni fait.
Merci et salutations.
Mise à JOUR
Maintenant, je peux presque le corps du texte. Cependant, il est toujours gâché par une déclaration de renseignements à venir en premier. Je reçois comme un résultat
From nobody Tue Dec 25 11:42:58 2012
US=3D$4.030
EastCst=3D$4.036
NewEng=3D$4.205
CenAtl=3D$4.149
LwrAtl=3D$3.921
Midwst=3D$3.984
GulfCst=3D$3.945
RkyMt=3D$4.195
WCst=3D$4.187
CA=3D$4.268
et je voudrais me débarrasser de From nobody Tue Dec 25 11:42:58 2012
qui est de l'information. Je sais que je pourrais analyser le texte de regarder pour la première ligne... je sais.
Le code pour la réalisation de la sorte (pour brancher mon premier échantillon) est
if varSubject[0] == '$':
r, d = m.fetch(emailid, "(UID BODY[TEXT])")
msg_cnt += 1
my_msg.append(msg)
print email.message_from_string(d[0][1])
Avez-vous une meilleure façon (pas d'info de la chaîne) ??? Plus: quelle est la commande à maintenant chercher la date ? Je sais que je peux faire varDate = msg['date']
où adapté ci-dessus, mais comment faire pour extraire seulement jour-mois-année ? GRÂCE
OriginalL'auteur octoback | 2012-12-25
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir le contenu du corps en effectuant l'une des opérations suivantes
http://docs.python.org/2.7/library/email.message.html#email.message.Message
OriginalL'auteur damzam
J'ai réussi à obtenir que cela fonctionne à l'aide de Gmail, il extrait les bits utiles et sorties pour les fichiers de texte:
OriginalL'auteur Edward Chapman