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