I read this already und schrieb dieses Skript, um Körper für E-Mails in einigen Mail-Box, die Titel beginnt mit "$" und wird von einigen Absender gesendet.Python imaplib holen Körper E-Mails Gmail
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 email.message_from_string(response_part[1])
drucken, kann ich sehen, es erste Informationen enthält (Header, von, bis, Datum ...), die der Volltextkörper. Aber ich kann den Körper nicht selbst holen. 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])
tut es nicht.
Dank und Grüße. Jetzt
UPDATE
, kann ich fast Text haben. Es wird jedoch immer noch durch eine Informationsmeldung verdorben, die zuerst kommt. 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 von From nobody Tue Dec 25 11:42:58 2012
loszuwerden, die Informationen sind. Ich weiß, dass ich Text analysieren könnte, suche nach der ersten relevanten Zeile ... ich weiß.
Der Code für das Erreichen so (in meiner ersten Probe-Stecker) 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 Art und Weise haben (kein string) ??? Mehr: Was ist der Befehl, um das Datum jetzt zu holen? Ich weiß, dass ich varDate = msg['date']
wo oben geeignet tun kann, aber wie Tag-Monat-Jahr nur abrufen? DANK
dies tut es, danke – octoback