使用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返回空内容,可能是以下两种情况:
- 邮件本身没有对应格式的正文内容(比如只有HTML正文的邮件,
text_body会为空) - 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
相关产品推荐
相关产品推荐

