使用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下.
你有一个行结尾问题.测试消息的主体使用无回车(\ 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)