Windows下用Python2.7读取Gmail邮件正文遇text/plain返回None问题
排查方向与提示
- 检查邮件的MIME结构:部分邮件可能未包含单独的text/plain内容块,仅提供text/html版本。你可以用
message.walk()遍历邮件所有MIME部分,打印每个部分的get_content_type()结果,确认是否存在text/plain类型的内容。 - 匹配MIME类型时忽略额外参数:有些邮件的text/plain类型会附带参数(如
text/plain; charset=utf-8),直接用'text/plain'精确匹配会失败。可以通过判断part.get_content_type().split(';')[0] == 'text/plain'来忽略参数,准确识别目标类型。 - 遍历所有嵌套的MIME层级:如果邮件是
multipart/alternative这类嵌套结构,仅检查顶层部分会遗漏深层的text/plain内容。必须用message.walk()递归遍历所有层级的MIME部分,逐个排查。 - 尝试直接提取纯文本载荷:Python 2.7的
email模块中,若邮件为multipart/alternative类型,可尝试直接获取对应部分的解码后载荷:part.get_payload(decode=True),部分情况下模块会自动处理格式转换。也可以尝试调用message.get_content()(若模块版本支持)获取系统生成的纯文本内容。 - 确认字符编码处理:即使找到text/plain部分,错误的编码处理也可能导致内容异常。通过
part.get_content_charset()获取字符集,解码时指定对应编码,避免因编码问题导致内容显示为空或乱码。
内容的提问来源于stack exchange,提问作者gvphubli.blogspot.com
相关产品推荐
相关产品推荐

