Форум сайта python.su
0
Добрый день. Прошу помощи, поскольку не понимаю причины.
Есть простой код
import os import imaplib import email import base64 imaplib.IMAP4.debug = imaplib.IMAP4_SSL.debug = 1 con = imaplib.IMAP4_SSL('imap.yandex.ru',993) con.login('user@yandex.ru','pass') con.select() typ, data = con.search(None, 'ALL') for num in data[0].split(): typ, data = con.fetch(num, '(RFC822)') msg = email.message_from_string(data[0][1]) con.close() con.logout()
Офлайн
294
не так то что email.message_from_string должна получить строку или None, а вы ей передаете ХЗ что.
Пперед тем как вызывать
msg = email.message_from_string(data[0][1])
print(data[0][1])
[code python][/code]
Отредактировано PEHDOM (Март 9, 2017 13:51:52)
Офлайн
0
PEHDOMспасибо. это помогло.
не так то что email.message_from_string должна получить строку или None, а вы ей передаете ХЗ что.Пперед тем как вызывать
smtp.mail=…….@mail.ru; dkim=pass header.i=@mail.ru
ate:MIME-Version:Subject:To:From; bh=bYaCUHdyc8RnRRpjP9L5Zsc1LKGguw2rtmmiN9YzEwI=;Отредактировано alexey_gh (Март 10, 2017 08:37:54)
Офлайн
857
alexey_ghРаз байты подаются, используй email.message_from_bytes() .Что не так в коде?TypeError: initial_value must be str or None, not bytes
alexey_ghТам почтовые адреса есть в закодированном виде. Что ты постирал, этого не достаточно.
вывод print такой
Отредактировано py.user.next (Март 9, 2017 16:31:05)
Офлайн
294
1. про документацию не скажу, не я ее писал.. но скоре всего у вас в теле письма(или еще где) кирилица, а у авторов документации сугубо латиница.
чтоб не заморачиваться можете сделать так
try: msg = email.message_from_string(data[0][1]) except TypeError: msg = email.message_from_bytes(data[0][1])
b'\xd0\x91\xd0\xb0\xd0\xb9\xd1\x82\xd1\x8b'
>>> a='Байты'.encode('utf-8')
>>> a
b'\xd0\x91\xd0\xb0\xd0\xb9\xd1\x82\xd1\x8b'
>>> type(a)
<class 'bytes'>
>>> b='Bytes'.encode('utf-8')
>>> b
b'Bytes'
>>> type(b)
<class 'bytes'>
>>> c='Строка'
>>> c
'Строка'
>>> type(c)
<class 'str'>[code python][/code]
Отредактировано PEHDOM (Март 9, 2017 16:57:37)
Офлайн
0
PEHDOMСпасибо. Появилось хоть небольшое просветление в этом вопросе.
1. про документацию не скажу, не я ее писал.. но скоре всего у вас в теле письма(или еще где) кирилица, а у авторов документации сугубо латиница.чтоб не заморачиваться можете сделать так
Офлайн