Декодировка письма Gmail Python
Хочу прочитать последнее письмо которое мне пришло на прочту с помощью imaplib, Но тема и текст письма зашифрованы, как расшифровать? Текст что мне выдает и сам код снизу
('none none', 'Тут почта от кого пришла')
Wed, 28 Jul 2021 00:36:09 +0300
=?UTF-8?B?0J3QvtCy0LDRjyDQt9Cw0Y/QstC60LAg4oSWMzY3ODk0MTE=?=
<CAAzzXJgMW=tfFRHKs+5eBujcphzfs67pBv5bnNPfO58deAJrFA@mail.gmail.com>
Код
import imaplib
import email
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('***', '***')
mail.list()
mail.select("inbox")
result, data = mail.search(None, "ALL")
ids = data[0]
id_list = ids.split()
latest_email_id = id_list[-1]
result, data = mail.fetch(latest_email_id, "(RFC822)")
raw_email = data[0][1]
raw_email_string = raw_email.decode()
email_message = email.message_from_string(raw_email_string)
print(email.utils.parseaddr(email_message['From']))
print(email_message['Date'])
print(email_message['Subject'])
print(email_message['Message-Id'])
Заранее спасибо.
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Попробуйте указать политику default в message_from_string (согласно ответу)
from email import policy
...
email_message = email.message_from_string(raw_email_string, policy=policy.default)
Пример:
from email import policy
import email
raw_email_string = """\
From: [email protected]
To: [email protected]
Subject: the next line has a space on it
\x20
Date: Mon, 8 Apr 2002 15:09:19 -0400
Message-ID: spam
Here's the message body
"""
email_message = email.message_from_string(raw_email_string, policy=policy.default)
print(email.utils.parseaddr(email_message['From']))
print(email_message['Date'])
print(email_message['Subject'])
print(email_message['Message-Id'])
print(email_message.get_payload())
Результат:
('', '[email protected]')
Mon, 08 Apr 2002 15:09:19 -0400
the next line has a space on it
spam
Here's the message body