You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

希伯来语邮件乱码转换及邮件Payload嵌套结构技术求助

嘿,我来帮你搞定这两个问题——先解决希伯来语乱码,再给你讲清楚邮件结构为啥这么多层!

一、解决希伯来语乱码问题

你看到的=EE=E1=F7=F9=E9=ED是Quoted-Printable编码,这种编码是邮件系统里用来传输非ASCII字符的常见方式,把特殊字符转成=XX(XX是字符的十六进制值)的形式。不用手动解码,Python的email模块已经帮你做好了工具:

具体步骤&代码示例

  1. 先定位到你要处理的邮件子部分(就是你之前嵌套获取的那个元素)
  2. 用get_payload(decode=True)自动解码Quoted-Printable编码,得到字节流
  3. 根据邮件的字符集把字节流转成希伯来语文本(希伯来语老邮件常用windows-1255,新邮件多用UTF-8)
# 先拿到你要处理的那个邮件子部分
target_part = massage.get_payload()[0].get_payload()[0]

# 第一步:解码编码的payload(自动处理Quoted-Printable/Base64)
decoded_bytes = target_part.get_payload(decode=True)

# 第二步:从邮件头获取字符集,没有的话用希伯来语常用的兜底
charset = target_part.get_content_charset() or "windows-1255"

# 转成可读的希伯来语文本
hebrew_text = decoded_bytes.decode(charset)
print(hebrew_text)

如果解码后还是不对,可以试试把windows-1255换成UTF-8,或者查看该邮件部分的Content-Type头(比如print(target_part.get('Content-Type'))),里面会明确标注charset值。

二、理解邮件的多层Payload结构

你遇到的嵌套可迭代对象,本质是因为邮件采用了MIME多部分格式——这是现代邮件的标准设计,允许一封邮件同时包含纯文本正文、HTML正文、附件,甚至嵌套的子邮件(比如转发的邮件)。

简单说下结构逻辑:

  • 如果一个邮件部分的Content-Type是multipart/...(比如multipart/alternative、multipart/mixed),那它就是一个“容器”,调用get_payload()会返回一个子部分的列表,每个子部分又是一个独立的邮件对象
  • 只有当部分的Content-Type是text/plain、text/html或者application/...(附件)这类非多类型时,get_payload()才会直接返回内容(或编码后的内容)

举个常见的邮件结构例子:

顶级邮件(multipart/mixed)
├─ 正文容器(multipart/alternative)
│  ├─ 纯文本正文(text/plain)
│  └─ HTML正文(text/html)
└─ 附件(application/pdf)

你可以用这段代码遍历打印整个邮件的结构,帮你快速定位到需要的正文部分:

def traverse_mail_structure(part, indent=0):
    indent_str = "  " * indent
    print(f"{indent_str}类型: {part.get_content_type()}")
    print(f"{indent_str} disposition: {part.get('Content-Disposition', '无')}")
    
    if part.is_multipart():
        for idx, subpart in enumerate(part.get_payload()):
            print(f"{indent_str}--- 子部分 {idx} ---")
            traverse_mail_structure(subpart, indent + 1)
    else:
        print(f"{indent_str}这是一个内容部分,可通过get_payload(decode=True)解码")

# 调用函数打印结构
traverse_mail_structure(massage)

内容的提问来源于stack exchange,提问作者Moran Reznik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 13:17:36