使用 exchangelib 检索原始电子邮件 headers

Retrieve raw email headers with exchangelib

我已经能够使用 exchangelib 登录我组织的 Office 365 电子邮件并使用 Python 检索邮件。现在,给定一条消息,我想检索其所有原始 headers。 item.headers只提供部分headers;例如,ToFrom 缺失。

This article 表示您可以使用名为 PR_TRANSPORT_MESSAGE_HEADERS 的扩展 属性,它具有标签 0x7d 和类型 String。这是一个完整的示例,它打印收件箱中第一条消息的原始 headers。

import exchangelib as E

user = 'wgates@microsoft.com'
password = 'hunter2'

class RawHeaders(E.ExtendedProperty):
    property_tag = 0x7d
    property_type = 'String'
E.items.Message.register('rawheaders', RawHeaders)
E.items.MeetingRequest.register('rawheaders', RawHeaders)

print("Logging in…")
account = E.Account(
    primary_smtp_address = user,
    autodiscover = True,
    credentials = E.Credentials(username = user, password = password),
    access_type = E.DELEGATE)

print(account.inbox.all()[0].rawheaders)