是否可以使用Outlook / Office 365 REST API从电子邮件中检索RFC 2822(或任何)标头?

时间:2016-06-29 15:02:43

标签: outlook-restapi

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

2 个答案:

答案 0 :(得分:7)

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

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

对于图表:图表的测试终端中的消息中也存在此属性,因此您可以执行以下操作:

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

对于非beta端点:API不直接提供访问权限。但是,您可以使用PidTagTransportMessageHeaders

访问Extended Property API MAPI属性

在第一个链接中,我们看到PidTagTransportMessageHeaders的属性ID为0x7D,类型为String。因此,GET的$expand参数如下所示:

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

注意:这仅适用于Outlook端点(https://outlook.office.com)。对于Graph,请参阅madsheep的答案

将其与GET一起用于特定邮件,您的请求可能如下所示:

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

答案 1 :(得分:4)

对于所有在MS Graph api的遗产中丢失的可怜的灵魂 - 上面的答案似乎不再正确,因为它将返回错误" PropertyId不是属性名称" - 现在似乎正确的答案是:

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获取邮件头的方法。