Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

polskie znaki w zdecodowanej wiadomosci email

41 views
Skip to first unread message

piasekps

unread,
Dec 7, 2007, 6:52:59 PM12/7/07
to
witam wszystkich

niedawno zaczolem zaznajamiac sie z pythonem,
postanowilem zrobic wlasny progrma pobierajacy poczte e-mail
udalo mi sie sciagnac, wyswietlic podstawowe parametry
jak data dostarczenia, od kogo do kogo etc.

zatrzymalem sie na decodowaniu wiadomosci, decoduje ja np za pomoca
base64
w wyniku dostaje prawie juz dobry tekst wiadomosci jednak nie
otrzymuje polskich
znakow, zamiast nich mam "?" z otoczka,

jakies sugestie jak rozwiazac ten pewnie drobny problem
pozdrawiam
p.s.

Adam Byrtek

unread,
Dec 8, 2007, 9:37:44 AM12/8/07
to
piasekps wrote:
> niedawno zaczolem zaznajamiac sie z pythonem,
> postanowilem zrobic wlasny progrma pobierajacy poczte e-mail
> udalo mi sie sciagnac, wyswietlic podstawowe parametry
> jak data dostarczenia, od kogo do kogo etc.
>
> zatrzymalem sie na decodowaniu wiadomosci, decoduje ja np za pomoca
> base64

I robisz to ręcznie, bez użycia żadnej gotowej biblioteki?

Pozdrawiam,
Adam


--
Adam Byrtek

piasekps

unread,
Dec 8, 2007, 12:05:34 PM12/8/07
to
> I robisz to ręcznie, bez użycia żadnej gotowej biblioteki?

korzystam z poplib do polaczenia sie z serverem
i z base64 do dekodowania

Rob Wolfe

unread,
Dec 8, 2007, 2:34:18 PM12/8/07
to
piasekps <pias...@gmail.com> writes:

Skorzystaj jeszcze z modułu `email`. Idzie to mniej
więcej tak:

<code>
import poplib
import email

pop3 = poplib.POP3('host')
pop3.user('user')
pop3.pass_('password')

msgcount = pop3.stat()[0]

for msgnr in range(1, msgcount + 1):
msgcontent = '\r\n'.join(pop3.retr(msgnr)[1])
msg = email.message_from_string(msgcontent)
charset = msg.get_content_charset() or 'iso-8859-2'
print '%d: %s %s (%s)' % (msgnr, msg['from'], msg['subject'], charset)
print "==========tresc========="
for part in msg.walk():
if part.get_content_maintype() == 'text':
print part.get_payload().decode(charset)
pop3.quit()
</code>

RW

piasekps

unread,
Dec 8, 2007, 3:14:52 PM12/8/07
to
> Skorzystaj jeszcze z modułu `email`.

dzieki nastepnym razem skorzystam,
ale mimo tego chcialbym poznac sposob
jak otrzymac polskie litery

dodatkowo moge powiedziec ze po zapisaniu odkodowanej wiadomosci e-
mail
do pliku i odpalenia go recznie w konsoli mam polskie litery, ale w
pythonie
caly czas brakuje mi polskich liter,
czyli zakladam ze chodzi tu tylko o
kodowanie w odpowiednim standardzie iso.. lub utf-8 tylko nie wiem
gdzie i jak to zmienic (nie dziala: zmienna.encode('utf-8') ani inne
standardy)

pozdrawiam
p.s.

Rob Wolfe

unread,
Dec 8, 2007, 3:33:33 PM12/8/07
to
piasekps <pias...@gmail.com> writes:

Procedura jest następująca:

1. bierzesz ciąg znaków
>>> s = 'ąćę'
>>> s
'\xb1\xe6\xea'

2. sprawdzasz czy nie unikod
>>> type(s)
<type 'str'>

3. nie unikod, to dekodujesz do unikodu używajac kodowania,
jakie było użyte przy pisaniu maila (to *musisz* wiedzieć)
>>> u = s.decode('iso-8859-2')
>>> type(u)
<type 'unicode'>

4. unikod, kodujesz do stringa używając kodowania *terminala*
>>> print u.encode('utf-8')
ąćę

RW

piasekps

unread,
Dec 9, 2007, 4:17:53 AM12/9/07
to
Super !!!!!
o cos takiego mi wlasnie chodzilo,
dzieki wielkie za pomoc !!
pozdrawiam
p.s.

0 new messages