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

使用Python exchangelib的EWS无法通过.body提取邮件正文的问题

解决exchangelib获取邮件正文的问题

嘿,这个问题我之前也碰到过!你现在调用mail.body拿到的内容其实是exchangelib默认返回的邮件元数据摘要,并不是实际的邮件正文内容,这是库的默认行为导致的。

正确获取邮件正文的方法

exchangelib的邮件对象提供了两个专门用于获取正文的属性:

  • text_body:获取纯文本格式的邮件正文
  • html_body:获取HTML格式的邮件正文(如果邮件本身是HTML格式的话)

修改后的代码示例

account = Account(
    primary_smtp_address=username_to_access,
    config=config,
    autodiscover=False,
    access_type=DELEGATE
)
items = account.inbox.all()
for mail in items:
    # 打印纯文本正文
    print(mail.text_body)
    # 如果需要HTML格式的正文,替换成下面这行
    # print(mail.html_body)

额外注意事项

如果发现text_body或html_body返回空内容,可能是以下两种情况:

  1. 邮件本身没有对应格式的正文内容(比如只有HTML正文的邮件,text_body会为空)
  2. exchangelib为了性能优化,默认没有加载完整的邮件属性。这时候可以:
    • 调用mail.load()强制加载所有属性后再获取正文
    • 查询邮件时直接指定需要加载的字段,提升性能,示例如下:
      from exchangelib import Q
      
      # 查询时指定加载text_body和html_body字段
      items = account.inbox.all().only('text_body', 'html_body')
      for mail in items:
          print(mail.text_body)
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:51:34