是否可以从带有 Outlook/Office 365 REST API 的电子邮件中检索 RFC 2822(或任何)headers?

Is it possible to retrieve the RFC 2822 (or any) headers from an email with the Outlook/Office 365 REST API?

我正在处理的应用程序需要访问电子邮件的 headers - 特别是像 return-pathin-reply-toreferences 这样的电子邮件。理想情况下,我们希望能够访问电子邮件的所有 RFC 2822 headers。 Outlook/Office 365 REST API 可以实现吗?如果没有,是否可以使用任何 API?

更新: InternetMessageHeaders 属性 已添加到 Outlook API 的 beta 端点,因此您无需使用扩展 属性 东西。不过,您必须通过 $select 明确请求 属性。类似于:

GET https://outlook.office.com/api/beta/me/mailfolders/inbox/messages?
$select=Subject,InternetMessageHeaders

对于 Graph: 属性 也存在于 Graph 测试端点的消息中,因此您可以:

GET https://graph.microsoft.com/beta/me/mailfolders/inbox/messages?
    $select=subject,internetMessageHeaders

对于非测试版端点:API 不直接提供访问权限。但是,您可以访问 PidTagTransportMessageHeaders MAPI property using the Extended Property API.

从第一个link,我们看到PidTagTransportMessageHeaders的属性 ID是0x7D,类型是String。所以你的 GET 的 $expand 参数看起来像:

$expand=SingleValueExtendedProperties($filter=PropertyId eq 'String 0x7D')

NOTE: This is only applicable for the Outlook endpoint (https://outlook.office.com). For Graph, see the answer from madsheep

将其与特定消息的 GET 放在一起,您的请求可能如下所示:

GET https://outlook.office.com/api/v2.0/me/messages/{message-id}?
$select=Subject,SingleValueExtendedProperties
&$expand=SingleValueExtendedProperties($filter=PropertyId eq 'String 0x7D')

所有在 MS Graph 的疯狂中迷失的可怜人 api - 上面的答案似乎不再正确,因为它会 return 错误 "PropertyId is not a property name" - 它现在看来正确答案是:

GET https://graph.microsoft.com/beta/me/messages/{message-id}?
$select=Subject,SingleValueExtendedProperties&
$expand=SingleValueExtendedProperties($filter=id eq 'String 0x7D')

这就是您从 Outlook/Office 365 REST Graph api 获取消息 headers 的方式。