Форум сайта python.su
подключаюсь к ящику по pop3:
self.pop = poplib.POP3(serv)
self.pop.user(login)
self.pop.pass_(password)
#получаю список писем -- вот как бы тут получить только непрочитанные? такое возможно по pop3?
resp, ids, octets = self.pop.list()
total = len(ids)
# беру последнее письмо:
msg = self.pop.retr(total)
# склеиваю, т.к. почему-то все пришло кусками. тут кстати join никак не использовать? он требует строку, а не байты
# а msg состоит из кусков байтов
body = b''
for part in msg[1]:
body += part
# наконец декодирую:
import quopri
t = quopri.decodestring(body)
print(t.decode('utf-8', 'ignore'))
Это сообщ=B5ние было отпр=B0влено на адре=81 посредством= ввода данного= e-mail на сайте
Офлайн
Попробуй так:
import poplib
def getMailMessages():
pop3 = poplib.POP3('pop.yandex.ru', 110)
pop3.user('login')
pop3.pass_('password')
for msg in pop3.list()[1]:
for line in pop3.retr(msg.split()[0])[1]:
print unicode(line, 'koi8-r').encode('cp1251')
if __name__ == '__main__':
getMailMessages()
Офлайн
Офлайн
subj = 'Re: [Ticket#201011129004763] =?UTF-8?Q?=D0=A3=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?==?UTF-8?Q?=D0=BF=D0=BB=D0=B5=D0=B9=D0=BB=D0=B8=D1=81=D1=82=D0=BE=D0=BC?=.'
o7412369815963это вообще в третьем питоне не подходитmsg = h[0][0].decode(h[0][1]) if h[0][1] else h[0][0]
[(b'Re: [Ticket#201011129004763]', None), (b'\xd0\xa3\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xbf\xd0\xbb\xd0\xb5\xd0\xb9\xd0\xbb\xd0\xb8\xd1\x81\xd1\x82\xd0\xbe\xd0\xbc', 'utf-8'), (b'.', None)]
[('Re: [Ticket#201011129004763] =?UTF-8?Q?=D0=A3=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?==?UTF-8?Q?=D0=BF=D0=BB=D0=B5=D0=B9=D0=BB=D0=B8=D1=81=D1=82=D0=BE=D0=BC?=.', None)]
Отредактировано (Авг. 31, 2011 02:50:37)
Офлайн