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
				
  
  
  
  
 
*AUFDIESTIRNKLATSCH* 
Mensch..... Mitten in der Nacht sollte man nicht meinen, Programmieren zu können.....  
 
Danke Gerold!!!
Ach so, und "MOIN!!!"
Pascal  

 
			 
			
					
				
				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