biz*_*ger 4 python email python-2.7
我想使用python imap和email包检索电子邮件的正文(仅文本).
根据这个SO线程,我使用以下代码:
mail = email.message_from_string(email_body)
bodytext = mail.get_payload()[ 0 ].get_payload()
Run Code Online (Sandbox Code Playgroud)
虽然它在某些情况下工作正常,但有时候我会跟随响应
[<email.message.Message instance at 0x0206DCD8>, <email.message.Message instance at 0x0206D508>]
Run Code Online (Sandbox Code Playgroud)
我的主要问题是在bodytext中显示为消息实例的已回复或转发的消息.
使用以下代码解决了我的问题:
bodytext=mail.get_payload()[0].get_payload();
if type(bodytext) is list:
bodytext=','.join(str(v) for v in bodytext)
Run Code Online (Sandbox Code Playgroud)
您假设消息具有统一的结构,具有一个明确定义的"主要部分".事实并非如此; 可能有单个部分的消息不是文本部分(只是二进制文件的"附件",没有其他内容)或者它可以是具有多个文本部分的多部分(或者,根本没有)甚至是如果只有一个,则不必是第一部分.此外,还有嵌套的多部分(一个或多个部分是另一个MIME消息,递归地).
用这么多的话来说,你必须检查MIME结构,然后决定哪些部分与你的应用程序相关.如果您只接收来自相当静态的一小组客户端的消息,您可能会削减一些角落(至少在下一次升级Microsoft Plague命中之前),但一般来说,根本就没有任何类型的层次结构,只是一组(不一定总是直接相关)同等重要的部分.
| 归档时间: |
|
| 查看次数: |
12820 次 |
| 最近记录: |