Конечные знаки равенства (=) в электронных письмах

Я загружаю сообщения из учетной записи Gmail, используя POP3, и сохраняю их в базе данных SQLite для дальнейшей обработки:

mailbox = poplib.POP3_SSL('pop.gmail.com', '995') 
mailbox.user(user) 
mailbox.pass_(password)

msgnum = mailbox.stat()[0]

for i in range(msgnum):
    msg = '\n'.join(mailbox.retr(i+1)[1])
    save_message(msg, dbmgr)

mailbox.quit()

Однако, просматривая базу данных, все строки, кроме последней в теле сообщения (полезная нагрузка), имеют завершающие знаки равенства. Вы знаете, почему это происходит?

1 ответ

Решение

Ссылка Фредерика привела меня к ответу. Кодировка называется "цитируемая для печати" ( вики), и ее можно декодировать, используя quopri Модуль Python ( документация):

msg.decode('quopri').decode('utf-8')

Обновление для python 3.x

Теперь вам нужно вызвать codecs модуль.

import codecs
bytes_msg = bytes(msg, 'utf-8')
decoded_msg = codecs.decode(bytes_msg, 'quopri').decode('utf-8')
Другие вопросы по тегам