email.retr retrieves strange =20 characters when the email body has chinese characters in it

。_饼干妹妹 提交于 2019-12-24 04:59:28

问题


    self.logger.info(msg)
    popinstance=poplib.POP3(self.account[0])
    self.logger.info(popinstance.getwelcome())
    popinstance.user(self.account[1])
    popinstance.pass_(self.account[2])
    try:
        (numMsgs, totalSize)=popinstance.stat()
        self.logger.info("POP contains " + str(numMsgs) + " emails")
        for thisNum in xrange(1, numMsgs + 1):
            try:
                (server_msg, body, octets)=popinstance.retr(thisNum)
            except:
                self.logger.error("Could not download email")
                raise
            text="\n".join(body)
            mesg=StringIO.StringIO(text)
            msg=rfc822.Message(mesg)
            MessageID=email.Utils.parseaddr(msg["Message-ID"])[1]
            self.logger.info("downloading email " + MessageID)
            emailpath=os.path.join(self._emailpath + self._inboxfolder + "\\" + self._sanitize_string(MessageID  + ".eml"))
            emailpath=self._replace_whitespace(emailpath)
            try:
                self._dual_dump(text,emailpath)
            except:
                pass
            self.logger.info(popinstance.dele(thisNum))
    finally:
        self.logger.info(popinstance.quit())

(server_msg, body, octets)=popinstance.retr(thisNum) returns =20 in the body of the email when the email contains chinese characters.

How do I handle this?

raw text of email:

Subject: (B/L:4363-0192-809.015) SI FOR 15680XXXX436

=20

Dear

=20

SI ENCLOSED

PLS SEND US THE BL DRAFT AND DEBIT NOTE

=20

TKS

=20

MYRI

----- Original Message -----=20


回答1:


It is probably a Space character encoded in quoted-printable




回答2:


Use the quopri module to decode the string.



来源:https://stackoverflow.com/questions/320166/email-retr-retrieves-strange-20-characters-when-the-email-body-has-chinese-char

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!