Trailing equal signs (=) in emails
Asked Answered
A

2

7

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?

Abundant answered 11/12, 2014 at 11:1 Comment(1)
Possible duplicate of How to understand the equal sign '=' symbol in IMAP email text?Bink
A
5

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')
Abundant answered 11/12, 2014 at 12:6 Comment(0)
P
2

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')
Potentiometer answered 20/12, 2019 at 3:25 Comment(1)
confirmed: this works with python 3.x, whereas the accepted answer does notTransmontane

© 2022 - 2024 — McMap. All rights reserved.