Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-04-27 21:54:42

  Paad - Użytkownik

Paad
Użytkownik
Skąd: Częstochowa
Zarejestrowany: 2009-02-22

parsowanie pop3

Witam
Jeżeli chodzi o pythona jestem kompletnym laikiem, ale potrzebuje napisać sobie skrypt który będzie mi wrzucał maile do bazy danych - kolega polecił mi pythona niestety mam problem z parsowaniem wiadomości

Oto mój kod:

Kod:

import poplib
import email
from email import parser

pop_conn = poplib.POP3('serwer.pop3')
pop_conn.user('login')
pop_conn.pass_('haslo')
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
messages = ["\n".join(mssg[1]) for mssg in messages]
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
    print message['from']
    print message['subject']
    if message.is_multipart()!=True:
        print message.get_payload(decode=True)
    else:
        print message.get_payload()
pop_conn.quit()

i w zależności od formatu wiadomości zwraca mi takie wyniki

Kod:

"Adrian" <adrian@wp.eu>
test2
[<email.message.Message instance at 0x012843A0>, <email.message.Message instance at 0x01284378>]
--------------------
"Adrian" <adrian@wp.eu>
test3
Tescior 3
--------------------
=?iso-8859-2?B?R79lZ7/zs2th?= <adrian@wp.eu>
=?iso-8859-2?B?dGVzdCBHv2Vnv/Oza2E=?=
Test Gżegżółka

patrzałem w kilka manuali i próbowałem to rozwiązać, ale efekt był mizerny.
Może znajdzie się ktoś, kto zechce pomóc.

Offline

 

#2  2010-04-27 22:00:28

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: parsowanie pop3

Może napisz na czym polega problem, wkleiłeś kod, podałeś przykład co robi, a nie wiemy co miałby robić. Co ma być sparsowane i co wrzucone do bazy. Widać, że masz adres e-mail, temat i treść. W czym problem? Chyba zostało to powrzucać do bazy danych.

Offline

 

#3  2010-04-27 22:14:26

  Paad - Użytkownik

Paad
Użytkownik
Skąd: Częstochowa
Zarejestrowany: 2009-02-22

Re: parsowanie pop3

chciałbym wrzucać sam tekst bez znaczników i innych zbędnych informacji - czyli tak jak jest w przykładzie 2.
i moje pytanie jest jak wyłuskać z pozostałych przypadków ten tekst.

Offline

 

#4  2010-04-28 00:14:30

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: parsowanie pop3

W pierwszym przykładzie masz jakieś obiekty Message, być może jakieś załączniki. Twój kod powinien być na to przygotowany, załączniki mogą mieć własne załączniki. Dobrze byłoby wykorzystać rekurencje, to nie takie proste. Zerknij na przykład: http://code.activestate.com/recipes/86675-using-the … unpack-a-mul/ . Niektóre nagłówki zostały zakodowane jak widać w przypadku 3 gdzie są polskie znaki i te stringi zostały zakodowane za pomocą base64. Dobrze by było gdybyś poczytał o tym jak taka wiadomość e-mail wygląda, jakie zawiera nagłówki, jak są kodowane znaki, załączniki. To nie takie banalne jak się wydaje.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)