Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trailing equal signs (=) in emails

I download messages from a Gmail account using POP3 and save them in a SQLite database for futher processing:

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()

However, looking in the database, all lines but the last one of the message body (payload) have trailing equal signs. Do you know why this happens?

like image 973
John Manak Avatar asked Dec 11 '14 11:12

John Manak


2 Answers

Frederic's link lead me to the answer. The encoding is called "quoted printable" (wiki) and it's possible to decode it using the quopri Python module (documentation):

msg.decode('quopri').decode('utf-8')
like image 125
John Manak Avatar answered Nov 02 '22 05:11

John Manak


Update for python 3.x

You now have to invoke the codecs module.

import codecs
bytes_msg = bytes(msg, 'utf-8')
decoded_msg = codecs.decode(bytes_msg, 'quopri').decode('utf-8')
like image 1
George Griffin Avatar answered Nov 02 '22 06:11

George Griffin