引发HeaderParseError

引发HeaderParseError

我正在尝试解码电子邮件主题标头。

我正在这样做(正则表达式用于在两个=之间添加一个空格:

header = '=?iso-8859-1?B?TU9UT1IubmwgbmlldXdzYnJpZWYgPiBOaWV1d2UgdmVya29vcHRvcHBl?==?iso-8859-1?B?ciBTdXp1a2kg?='
header = re.sub(r"(==)(?!$)", u"\0= =", header)
email.header.decode_header(header)


但这会引发HeaderParseError:

HeaderParseError                          Traceback (most recent call last)

/home/leon/<ipython console> in <module>()

/usr/lib/python2.7/email/header.pyc in decode_header(header)
    106                         # now we throw the lower level exception away but
    107                         # when/if we get exception chaining, we'll preserve it.
--> 108                         raise HeaderParseError
    109                 if dec is None:
    110                     dec = encoded


有趣的是,如果我将re.sub()的输出复制到剪贴板中并执行以下操作:

email.header.decode_header('=?iso-8859-1?B?TU9UT1IubmwgbmlldXdzYnJpZWYgPiBOaWV1d2UgdmVya29vcHRvcHBl?= =?iso-8859-1?B?ciBTdXp1a2kg?=')


有用!

所以我想re.sub()的编码有问题,但是我不知道如何解决。

最佳答案

在示例中,RFC2047令牌之间没有空格,这是行不通的。但是,您尝试修复它也不正确;您应该替换为u"= =",而不是u"\0= ="

如果您能够找到此类错误的根源并进行更正,而不是随后最多根据对数据应该是什么的良好猜测进行修复,那就更好了。

关于python - email.header.decode_headers()引发HeaderParseError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7384006/

10-11 17:05