Форум сайта python.su
0
добрый день.
Возникла нужда парсить письма со своего ящика. Но скрипт ругается, что я ему подсовывая не стринг тип а байт какой-то. Подскажите куда копать.
import email import poplib serv = 'pop.mail.ru' user = 'user@inbox.ru' pasw = 'pass' port = '110' 'def gettingletters():' Mailbox = poplib.POP3 (serv, port) Mailbox.user(user) Mailbox.pass_(pasw) resp, lst, octets = Mailbox.list() print ("DEBUG: Total %s messages: %s" % (user, len(lst))) messages = [Mailbox.retr(i) for i in range(1, len(Mailbox.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 ("{} : {}\n".format(message['subject'], message['From'])) Mailbox.quit()
Офлайн
0
Попробуй строку
messages = ["\n".join(mssg[1]) for mssg in messages]
messages = [b"\n".join(mssg[1]) for mssg in messages]
Офлайн
0
d54wvzc+i5zirs
Попробуй строку
Офлайн
20
zigenА вы парсер импортируйте, и ошибка уйдет. (Так же, рекомендуется, перед импортом его установить)
Офлайн
0
zigenС этим разобрался , добавил from email import parser. Теперь вот опять на типы ругается
Отредактировано zigen (Авг. 13, 2014 12:55:37)
Офлайн
0
print ("{} : {}\n".format(message['subject'], message['From']))
print ("{} : {}\n".format(message['subject'].decode('utf8'), message['From'].decode('utf8')))
Офлайн
0
d54wvzc+i5zirs
print (“{} : {}\n”.format(message.decode('utf8'), message.decode('utf8')))
Офлайн
0
Попробуй вот так:
print ("{} : {}\n".format(str(message['subject']), str(message['From'])))
Офлайн
0
Вот так помогло!!
messages = [parser.Parser().parsestr(mssg.decode('utf8')) for mssg in messages]
Офлайн
0
Только неясно как в русский декодировать вот такое на выходе :
=?utf-8?Q?
0=9D
0=B0_
0=B2
0=B0
1=88
0=B5_?=
=?utf-8?Q?
0=BE
0=B1
1=8A
1=8F
0=B2
0=BB
0=B5
0=BD?=
=?utf-8?Q?
0=B8
0=B5_
0=BE
1=82
0=B2
0=B5
1=82
0=B8
0=BB
0=B8_?=
=?utf-8?Q?
1=81_
0=B0
0=B4
1=80
0=B5
1=81
0=B0?=
Офлайн