Seite 1 von 1

Wie erkenne ich das Ende eines EMail-Textes??

Verfasst: Samstag 7. Januar 2006, 19:57
von pascalsv
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

Verfasst: Samstag 7. Januar 2006, 21:10
von mitsuhiko
import email :-)

Verfasst: Samstag 7. Januar 2006, 21:26
von rogen
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()


Verfasst: Samstag 7. Januar 2006, 23:20
von pascalsv
@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

Verfasst: Sonntag 8. Januar 2006, 00:19
von gerold
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
Hi Pascal!

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)
mfg
Gerold
:-)

Verfasst: Sonntag 8. Januar 2006, 10:52
von pascalsv
:shock: :? :( :roll: :oops:

*AUFDIESTIRNKLATSCH*

Mensch..... Mitten in der Nacht sollte man nicht meinen, Programmieren zu können..... :wink:

Danke Gerold!!!

Ach so, und "MOIN!!!"

Pascal :lol:

Verfasst: Sonntag 29. Januar 2006, 20:26
von ChrisSek
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]
Bin grad auf der Suche nach ner Möglichkeit gewesen, die Betreffzeile einer Mail vernünftig darzustellen.

Tausend Dank rogen! Klappt super mit dem Code.

Grüße
Chris