Проблема возникает в вашей строке
messages = ["\n".join(mssg[1]) for mssg in messages]
Здесь вы пытаетесь присоединиться к "\n"
, который является строкой, с mssg[1]
, который технически является списком, и это содержит байтовые строки. Чтобы заставить эту указанную c строку работать, вы можете сделать messages = [b"\n".join(mssg[1]) for mssg in messages]
(обратите внимание на b), чтобы она заработала. Однако вы снова столкнетесь с проблемами при вызове parsestr()
из Parser
, потому что вы снова анализируете его mssg[1]
, который не является строкой. Посмотрите документацию email.Parser
, она должна иметь функцию, которая принимает байты вместо строк в качестве входных данных.
Также я бы лично использовал IMAP вместо POP.