[python] email headers
Zdravím všechny znalé pythonu. Může mi někdo poradit s dekódováním hlaviček emailů ? Jde o toto: Ve složce /var/mail/ na linuxu přicházející emaily potřebuju elegantně zdekódovat. Co se týká vlastních zpráv, nemám problém: def ebox(inbox): 'Zpracuje email inbox' fp = open(inbox, 'rb') mbox = mailbox.UnixMailbox(fp, email.message_from_file) for msg in mbox: for part in msg.walk(): if part.get_content_maintype() == 'text': data = part.get_payload(decode=True) # zpracuju data Problém mám jen s hlavičkama. Když použiju například headers = Parser().parse(fp) tak ten ve výsledku dává při více zprávách za sebou vždy první nalezený objekt, ale další už ne: print 'To: %s' % headers['to'] print 'From: %s' % headers['from'] print 'Subject: %s' % headers['subject'] Můj dotaz tedy je: jak skloubit jednoduše obě funkce? Složitě to umím. Děkuji za váš čas. Zdraví V.L. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] email headers
Dne 26.7.2011 17:40, Ing. Vladislav Ludík napsal(a): Zdravím všechny znalé pythonu. Může mi někdo poradit s dekódováním hlaviček emailů ? Jde o toto: Ve složce /var/mail/ na linuxu přicházející emaily potřebuju elegantně zdekódovat. Co se týká vlastních zpráv, nemám problém: def ebox(inbox): 'Zpracuje email inbox' fp = open(inbox, 'rb') mbox = mailbox.UnixMailbox(fp, email.message_from_file) for msg in mbox: for part in msg.walk(): if part.get_content_maintype() == 'text': data = part.get_payload(decode=True) # zpracuju data Problém mám jen s hlavičkama. Když použiju například headers = Parser().parse(fp) tak ten ve výsledku dává při více zprávách za sebou vždy první nalezený objekt, ale další už ne: print 'To: %s' % headers['to'] print 'From: %s' % headers['from'] print 'Subject: %s' % headers['subject'] Můj dotaz tedy je: jak skloubit jednoduše obě funkce? Složitě to umím. Něco jako def ebox(inbox): 'Zpracuje email inbox' fp = open(inbox, 'rb') mbox = mailbox.UnixMailbox(fp, email.message_from_file) for msg in mbox: print 'To: %s' % msg['to'] print 'From: %s' % msg['from'] print 'Subject: %s' % msg['subject'] for part in msg.walk(): if part.get_content_maintype() == 'text': data = part.get_payload(decode=True) # zpracuju data by nefungovalo? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] email headers
Ahoj, mrkni na https://github.com/marrow/marrow.mailer Původní myšlenka toho projektu je trochu někde jinde, ale myslím, že by se z toho dalo ledacos využít. T. Dne 26.7.2011 17:40, Ing. Vladislav Ludík napsal(a): Zdravím všechny znalé pythonu. Může mi někdo poradit s dekódováním hlaviček emailů ? Jde o toto: Ve složce /var/mail/ na linuxu přicházející emaily potřebuju elegantně zdekódovat. Co se týká vlastních zpráv, nemám problém: def ebox(inbox): 'Zpracuje email inbox' fp = open(inbox, 'rb') mbox = mailbox.UnixMailbox(fp, email.message_from_file) for msg in mbox: for part in msg.walk(): if part.get_content_maintype() == 'text': data = part.get_payload(decode=True) # zpracuju data Problém mám jen s hlavičkama. Když použiju například headers = Parser().parse(fp) tak ten ve výsledku dává při více zprávách za sebou vždy první nalezený objekt, ale další už ne: print 'To: %s' % headers['to'] print 'From: %s' % headers['from'] print 'Subject: %s' % headers['subject'] Můj dotaz tedy je: jak skloubit jednoduše obě funkce? Složitě to umím. Děkuji za váš čas. Zdraví V.L. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] email headers
Michal Molhanec napsal(a): Dne 26.7.2011 17:40, Ing. Vladislav Ludík napsal(a): Zdravím všechny znalé pythonu. Může mi někdo poradit s dekódováním hlaviček emailů ? Jde o toto: Ve složce /var/mail/ na linuxu přicházející emaily potřebuju elegantně zdekódovat. Co se týká vlastních zpráv, nemám problém: def ebox(inbox): 'Zpracuje email inbox' fp = open(inbox, 'rb') mbox = mailbox.UnixMailbox(fp, email.message_from_file) for msg in mbox: for part in msg.walk(): if part.get_content_maintype() == 'text': data = part.get_payload(decode=True) # zpracuju data Problém mám jen s hlavičkama. Když použiju například headers = Parser().parse(fp) tak ten ve výsledku dává při více zprávách za sebou vždy první nalezený objekt, ale další už ne: print 'To: %s' % headers['to'] print 'From: %s' % headers['from'] print 'Subject: %s' % headers['subject'] Můj dotaz tedy je: jak skloubit jednoduše obě funkce? Složitě to umím. Něco jako def ebox(inbox): 'Zpracuje email inbox' fp = open(inbox, 'rb') mbox = mailbox.UnixMailbox(fp, email.message_from_file) for msg in mbox: print 'To: %s' % msg['to'] print 'From: %s' % msg['from'] print 'Subject: %s' % msg['subject'] for part in msg.walk(): if part.get_content_maintype() == 'text': data = part.get_payload(decode=True) # zpracuju data by nefungovalo? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python __ Informace od NOD32 6322 (20110725) __ Tato zprava byla proverena antivirovym systemem NOD32. http://www.nod32.cz Toto funguje skvěle. Díky V.L. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] email headers
A ještě toto mi nedá spát: jak zjistit obecně, které parametry se tak dají načíst z výše uvedené konstrukce z instance msg['parametr'] ? a dále: msg['date'] mi dá například výsledek: Mon, 25 Jul 2011 12:07:26 +0200 Je v Pythonu funkce na převod do formátu pro zapsání do tabulky mysql, v tomto příkladu by to mělo být: 2011-07-25 14:07:26 Zatím to dělám dvěma dotazy sql: SELECT STR_TO_DATE('Mon, 25 Jul 2011 12:07:26', '%a, %d %b %Y %T '); a následně z jeho výsledku: SELECT CONVERT_TZ('2011-07-25 12:07:26','+00:00','+02:00'); Děkuji za inspiraci V.L. Michal Molhanec napsal(a): Dne 26.7.2011 17:40, Ing. Vladislav Ludík napsal(a): Zdravím všechny znalé pythonu. Může mi někdo poradit s dekódováním hlaviček emailů ? Jde o toto: Ve složce /var/mail/ na linuxu přicházející emaily potřebuju elegantně zdekódovat. Co se týká vlastních zpráv, nemám problém: def ebox(inbox): 'Zpracuje email inbox' fp = open(inbox, 'rb') mbox = mailbox.UnixMailbox(fp, email.message_from_file) for msg in mbox: for part in msg.walk(): if part.get_content_maintype() == 'text': data = part.get_payload(decode=True) # zpracuju data Problém mám jen s hlavičkama. Když použiju například headers = Parser().parse(fp) tak ten ve výsledku dává při více zprávách za sebou vždy první nalezený objekt, ale další už ne: print 'To: %s' % headers['to'] print 'From: %s' % headers['from'] print 'Subject: %s' % headers['subject'] Můj dotaz tedy je: jak skloubit jednoduše obě funkce? Složitě to umím. Něco jako def ebox(inbox): 'Zpracuje email inbox' fp = open(inbox, 'rb') mbox = mailbox.UnixMailbox(fp, email.message_from_file) for msg in mbox: print 'To: %s' % msg['to'] print 'From: %s' % msg['from'] print 'Subject: %s' % msg['subject'] for part in msg.walk(): if part.get_content_maintype() == 'text': data = part.get_payload(decode=True) # zpracuju data by nefungovalo? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python