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

使用Python的imap_tools库打印邮件正文失败求助

解决imap_tools无法获取邮件正文(msg.text为空)的问题

问题原因

你遇到的情况是因为该邮件仅包含HTML格式的正文,没有纯文本(text/plain)版本。很多邮件客户端(比如Outlook)默认发送的邮件可能只生成HTML格式内容,不附带纯文本副本,所以msg.text自然为空,而msg.html能获取到内容。

解决方案

如果需要纯文本格式的正文,可以通过解析HTML内容来提取文本。推荐使用BeautifulSoup库来处理:

  1. 先安装BeautifulSoup:
pip install beautifulsoup4
  1. 修改代码如下:
from imap_tools import MailBox, A
from bs4 import BeautifulSoup

with MailBox('outlook.office365.com').login('test@test.com', 'test') as mailbox:
    for msg in mailbox.fetch(A(seen=False)):
        # 优先使用纯文本正文
        if msg.text:
            print(msg.text)
        # 若无纯文本,则解析HTML提取文本
        elif msg.html:
            soup = BeautifulSoup(msg.html, 'html.parser')
            print(soup.get_text(strip=True))

补充说明

  • soup.get_text(strip=True)会移除HTML标签,并清理多余的空格和换行,得到干净的纯文本内容。
  • 如果你需要保留部分格式,可以调整BeautifulSoup的提取参数,比如去掉strip=True,或者自定义解析规则。

内容的提问来源于stack exchange,提问作者Mr. Annonymous

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:45:41