Python:电子邮件get_payload解码在达到等号时失败了吗?

Par*_*and 7 python email

使用get_payload遇到奇怪的事情:当它在解码的消息中看到一个等号时,它似乎很糟糕.这是显示错误的代码:

import email

data = file('testmessage.txt').read()
msg  = email.message_from_string( data )
payload = msg.get_payload(decode=True)
print payload
Run Code Online (Sandbox Code Playgroud)

这是一个示例消息:测试消息.

消息仅打印到第一个"=".其余部分省略.谁知道发生了什么事?

带有"decode = False"的相同脚本会返回完整的消息,因此看起来解码对等号不满意.

这是在Python 2.5下.

Ric*_*dle 6

你有一个行结尾问题.测试消息的主体使用无回车(\ r)而没有换行符(\n).如果您在解析电子邮件之前修复了行结尾,那么一切正常:

import email, re
data = file('testmessage.txt').read()
data = re.sub(r'\r(?!\n)', '\r\n', data)  # Bare \r becomes \r\n
msg  = email.message_from_string( data )
payload = msg.get_payload(decode=True)
print payload
Run Code Online (Sandbox Code Playgroud)