У меня возникает ошибка при чтение письма AttributeError: 'int' object has no attribute 'decode'
У меня есть бот для чтения писем, при работе с почтовым сервисом Mail.ru не возникает никаких проблем, но как только я перехожу на другую почту, например yandex вылетает ошибка, Python представляет мое письмо не в виде байтов, а как целое, не понимаю, с чем это может быть связано.
Ошибка в строке: msg = email.message_from_bytes(messages_raw)
Ошибка
File "C:\Users\тимур\PycharmProjects\mail_reader-master(завод)\main.py", line 88, in <module>
main()
File "C:\Users\тимур\PycharmProjects\mail_reader-master(завод)\main.py", line 31, in main
msg = email.message_from_bytes(messages_raw)
File "C:\Anaconda3\lib\email\__init__.py", line 46, in message_from_bytes
return BytesParser(*args, **kws).parsebytes(s)
File "C:\Anaconda3\lib\email\parser.py", line 122, in parsebytes
text = text.decode('ASCII', errors='surrogateescape')
AttributeError: 'int' object has no attribute 'decode'
def main():
imap = functions.connection() #Функция подключения к почте
if not imap: #Если подлючиться не удалось вызов ошибки
sys.exit()
status, messages = imap.select("INBOX") # папка входящие
res, unseen_msg = imap.uid("search", "UNSEEN", "ALL")
unseen_msg = unseen_msg[0].decode(config.encoding).split(" ")
if unseen_msg[0]:
for letter in unseen_msg:
functions.download_attachment(unseen_msg) #Функция загрузки вложений
res, msg = imap.uid("fetch", letter, "(RFC822)")
if res == "OK":
messages_raw = msg[0][1]
msg = email.message_from_bytes(messages_raw)
msg_date = functions.date_parse(email.utils.parsedate_tz(msg["Date"]))
msg_from = functions.from_subj_decode(msg["From"])
msg_subj = functions.from_subj_decode(msg["Subject"])
if msg["Message-ID"]:
msg_id = msg["Message-ID"].lstrip("<").rstrip(">")
else:
msg_id = msg["Received"]
if msg["Return-path"]:
msg_email = msg["Return-path"].lstrip("<").rstrip(">")
else:
msg_email = msg_from
Пробовал преобразовывать email.message_from_string, проблема не решилась
Источник: Stack Overflow на русском