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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie den Inhalt des Körpers, indem Sie einen der folgenden
http://docs.python.org/2.7/library/email.message.html#email.message.Message
Habe ich es geschafft, diese zu bekommen, um die Arbeit mit Google Mail, extrahiert die nützliche Teile und gibt Sie in text-Dateien: