X-Git-Url: http://git.droids-corp.org/?p=imapami.git;a=blobdiff_plain;f=imapami%2Futils.py;fp=imapami%2Futils.py;h=291b71fdba881bceecb23af780f0c76835d99516;hp=abf79b0a79a2028c0092949b65203d69bad776e9;hb=6a57a643b9616029a8142197a27cd76caf7dc5f5;hpb=49d297122b300fab89f4a806b3ce99c07572eea1 diff --git a/imapami/utils.py b/imapami/utils.py index abf79b0..291b71f 100644 --- a/imapami/utils.py +++ b/imapami/utils.py @@ -28,6 +28,7 @@ # import email.header +import re # pylint: disable=deprecated-module # see https://www.logilab.org/ticket/2481 @@ -62,7 +63,16 @@ def headers_to_unicode(headers): """ unicode_headers = {} for key, hdr in headers.items(): - value, encoding = email.header.decode_header(hdr)[0] + try: + value, encoding = email.header.decode_header(hdr)[0] + except email.header.HeaderParseError: + try: + # try to workaround badly formatted RFC2047 tokens + hdr = re.sub(r"(==)(?!$)", u"= =", hdr) + value, encoding = email.header.decode_header(hdr)[0] + except email.header.HeaderParseError: + # fallback to wrong decoding + value, encoding = hdr, 'utf-8' if encoding is None: value = unicode(value) else: