Конечные знаки равенства (=) в электронных письмах
Я загружаю сообщения из учетной записи 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')