Python-imaplib fetch Körper gmail-E-Mails

Ich Lesen Sie diese bereits und das Drehbuch schrieb, hol Stelle für E-Mails in einigen E-mail-box, die Titel beginnt mit '$' und ist geschickt durch einigen sender.

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 

wenn ich drucken email.message_from_string(response_part[1]) ich es sehen kann, enthält erste Informationen (header, from, to, date...), die den vollständigen text. Aber, ich kann mir nicht Holen den Körper selbst. email.message_from_string(response_part[0]) druckt mails IDS, und email.message_from_string(response_part[2]) ist außerhalb des Bereichs. email.message_from_string(response_part[1][0]) weder ist es zu tun.

Dank und Grüße.

UPDATE

Nun, ich kann fast Körper text. Allerdings ist es immer noch verwöhnt von einer Erklärung zur nächsten ersten. Ich bekomme als Ergebnis

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

und ich möchte, um loszuwerden From nobody Tue Dec 25 11:42:58 2012 die Informationen. Ich weiß, ich könnte parse text für die ersten relevanten Zeile... ich weiß.

Den code für erreichen also (plug in meinem ersten Beispiel) ist

  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])

Haben Sie eine bessere Möglichkeit (keine info string) ??? Mehr: was ist der Befehl, um jetzt Holen Sie sich das Datum ? Ich weiß, dass ich tun kann varDate = msg['date'] geeignet, wo oben, aber wie kann man nur fetch-Tag-Monat-Jahr ? DANK

InformationsquelleAutor kiriloff | 2012-12-25
Schreibe einen Kommentar