Hallo zusammen,
ich habe mit einem Parser die Bestandteile einer Mail zerpflückt und feststellen müssen, dass die "message" an sich aus einem Haufen von Steuercodes besteht und auch der eigentliche "Text" in mehreren Strings enthalten ist. Scheinbar für jede Zeile bis zum CR einen??
Wie kann ich nun erkennen, aus wie vielen Message.Strings die Meldung besteht?
Bei meiner Testmail besteht die "Message" z.B. unter anderem aus folgenden Elementen:
[8] = Antwortadresse
[9] = Absender
[11] = Betreff
[32....] = Text
Danke & Gruß,
Pascal
Wie erkenne ich das Ende eines EMail-Textes??
vielleicht hilft das das .
Code: Alles auswählen
import poplib , base64, os , time,email, string,StringIO, rfc822,re,thread
import urllib2,htmllib,formatter
from email.Message import Message
------
def frager(self):
self.mails = []
M = poplib.POP3(host)
M.user(benutzer)
M.pass_(passw)
if len(M.list()[1]) <> 0:
print "-------"
#print M.list()[1]
for mailanzahl in range(len(M.list()[1])):
header,mes,obje = M.retr(mailanzahl+1)
#print mes
text = string.join(mes, "\n")
m = email.message_from_string(text)
typen = m.items()
adresse= ""
betreff = ""
for a in range(len(typen)):
if typen[a][0] == "From":
adresse=typen[a][1]
for a in range(len(typen)):
if typen[a][0] == "Subject":
betreff=str(typen[a][1]).decode("quopri_codec")
style = re.findall("""\=\?(.+?)\?Q\?.*""", str(betreff))
if style <> []:
betreff=betreff.replace(str(style[0]),"")
betreff=betreff.replace("=?","")
betreff=betreff.replace("?Q?","")
betreff=betreff[:-1]
#adresse = typen[0][0]
anhang = []
for part in m.walk():
if part.get_content_maintype() == "text" :
inhalt = part.get_payload()
inhalt = inhalt.decode("quopri_codec")
inhalt= htmlparser(inhalt)
if part.get_content_maintype() == 'multipart':
continue
if part.get_filename() <> None:
anhang.append([part.get_filename(),part.get_payload(decode=1)])
self.mails.append([mailanzahl+1,adresse,betreff,inhalt,anhang])
M.quit()
@rogen: das war schon mal sehr hilfreich, vielen Dank!!
Was mir jetzt noch fehlt ist eine Umwandlung der Zeitangabe in ein "schlankes" Datumsformat.
Bsp.:
Sat, 7 Jan 2006 18:53:23 +0100 ----> 07.01.2006
Wie kann ich soetwas erreichen? Habe schon gegooglet, aber leider erfolglos...
Danke,
Pascal
Was mir jetzt noch fehlt ist eine Umwandlung der Zeitangabe in ein "schlankes" Datumsformat.
Bsp.:
Sat, 7 Jan 2006 18:53:23 +0100 ----> 07.01.2006
Wie kann ich soetwas erreichen? Habe schon gegooglet, aber leider erfolglos...
Danke,
Pascal
Life is short - don't buy green bananas...
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Pascal!pascalsv hat geschrieben:Was mir jetzt noch fehlt ist eine Umwandlung der Zeitangabe in ein "schlankes" Datumsformat.
Bsp.:
Sat, 7 Jan 2006 18:53:23 +0100 ----> 07.01.2006
Code: Alles auswählen
import time
s = "Sat, 7 Jan 2006 18:53:23 +0100".split()
d = time.strptime("%s %s %s" % (s[1], s[2], s[3]), "%d %b %Y")
print time.strftime("%d.%m.%Y", d)
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Bin grad auf der Suche nach ner Möglichkeit gewesen, die Betreffzeile einer Mail vernünftig darzustellen.rogen hat geschrieben:Code: Alles auswählen
betreff=str(typen[a][1]).decode("quopri_codec") style = re.findall("""\=\?(.+?)\?Q\?.*""", str(betreff)) if style <> []: betreff=betreff.replace(str(style[0]),"") betreff=betreff.replace("=?","") betreff=betreff.replace("?Q?","") betreff=betreff[:-1]
Tausend Dank rogen! Klappt super mit dem Code.
Grüße
Chris