Мой код подключается к почтовому ящику и читает темы и содержимое каждого письма.
Мой код:
def decode_email(self, raw_email):
msg=email.message_from_string(raw_email.decode('utf-8'))
content = ''
if msg.is_multipart():
for part in msg.walk():
print('multipart')
thispart = part.get_payload(decode=True)
if part.get_content_type() == 'text/plain':
if isinstance(thispart, bytes):
thispart = thispart.decode()
content = content + thispart
else:
content = msg.get_payload(decode=True) #THIS LINE HAS A PROBLEM
if isinstance(content, bytes):
content = content.decode()
При составлении нескольких частей все кажется go хорошо.
Но когда односоставный, content = msg.get_payload(decode=True)
дает странный результат.
b '\ ub0b4 \ uc6a9 \ r \ n'
И content = content.decode()
дает
\ ub0b4 \ uc6a9
, чего я не ожидал.
Но когда я удаляю опцию декодирования, content = msg.get_payload()
, появляется правая строка.
Почему это происходит?
В документе кажется, что строка декодируется только при необходимости.
Любая мысль приветствуется :)