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

使用Gmail API获取邮件完整正文遇嵌套parts问题求助

解决Gmail API获取嵌套结构邮件正文的问题

你的核心问题是邮件采用了multipart/related这类嵌套的MIME结构,原代码只尝试读取第一层part,没有递归处理子parts,同时还存在遍历字典而非parts列表的错误。下面是修正后的完整代码,通过递归遍历所有parts来提取正文:

import base64
from bs4 import BeautifulSoup

results = service.users().messages().list(userId='me', labelIds=['Label_538763522493983273'], q="is:unread").execute()
messages = results.get('messages', [])

if not messages:
    print("No new messages")
else:
    def extract_body(part):
        # 如果是multipart类型,递归处理子parts
        if part['mimeType'].startswith('multipart/'):
            for sub_part in part.get('parts', []):
                result = extract_body(sub_part)
                if result:
                    return result
        # 找到text/plain或text/html类型的正文
        elif part['mimeType'] in ['text/plain', 'text/html']:
            data = part['body'].get('data')
            if data:
                data = data.replace("-","+").replace("_","/")
                decoded_data = base64.b64decode(data)
                return decoded_data.decode('utf-8')
        return None

    for message in messages:
        msg = service.users().messages().get(userId='me', id=message['id']).execute()
        payload = msg['payload']
        
        # 处理邮件正文
        body_content = extract_body(payload)
        if body_content:
            # 如果是HTML格式,用BeautifulSoup解析成纯文本(可选)
            if payload['mimeType'].startswith('text/html') or any(p['mimeType'] == 'text/html' for p in payload.get('parts', [])):
                soup = BeautifulSoup(body_content, "lxml")
                body_content = soup.get_text(strip=True)
            print(body_content)
        else:
            print("无法提取邮件正文")

关键修正点说明

  • 递归遍历parts:新增extract_body函数,自动识别multipart类型的嵌套结构,递归深入子parts直到找到实际的正文内容。
  • 正确判断MIME类型:只提取text/plain或text/html类型的part,这两种是邮件正文的常见格式。
  • 修复遍历错误:原代码中for part in parts是遍历单个part字典的key,完全错误,现在改为遍历parts列表并递归处理。
  • 编码处理:解码后转为UTF-8字符串,避免二进制输出乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:30:41