Microsoft graph api 如何从标题中获取可用的电子邮件引用id,以便在Microsoft Graph查询中使用?
我正在尝试使用Office 365中转发电子邮件的电子邮件标题中的引用邮件ID,然后查找具有该邮件ID的原始电子邮件 转发电子邮件标题中的引用ID将显示如下所示的内容。注意:我从Microsoft Graph中获取这些邮件头,方法是使用发件人/主题将Microsoft graph api 如何从标题中获取可用的电子邮件引用id,以便在Microsoft Graph查询中使用?,microsoft-graph-api,outlook-restapi,Microsoft Graph Api,Outlook Restapi,我正在尝试使用Office 365中转发电子邮件的电子邮件标题中的引用邮件ID,然后查找具有该邮件ID的原始电子邮件 转发电子邮件标题中的引用ID将显示如下所示的内容。注意:我从Microsoft Graph中获取这些邮件头,方法是使用发件人/主题将&$select=internetMessageHeaders添加到我的查询中,以查找转发的电子邮件 { "name": "References", "value": "<CAOLK2SAEzvs=-6Rs5cTbgORNivQVK2A
&$select=internetMessageHeaders
添加到我的查询中,以查找转发的电子邮件
{
"name": "References",
"value": "<CAOLK2SAEzvs=-6Rs5cTbgORNivQVK2AvMJDJT8o+ghx-XhCn7w@mail.gmail.com>"
}
有人知道Office 365或Microsoft Graph正在做什么来将-6Rs5cTbgORNivQVK2AvMJDJT8o+ghx-XhCn7w更改为caolk2sc6s9me05kyrquehk8drqbxx34sct0azgofflmdrapg
?它看起来像某种编码,但我一直无法复制它
最终,我希望能够转换我在引用ID头中得到的内容,这样我就可以转身使用该ID使用Microsoft Graph查找原始电子邮件。ID是一个散列值,其中包括邮件所在的路径/文件夹。因此,例如,如果您移动一条消息(比如从收件箱移动到存档),那么您应该期望
id
发生变化
要跟踪邮件,无论其位置如何,都应使用
internetMessageId
($select=internetMessageId
)属性 我发现了这个问题。在我的测试消息ID中,我有字符=和+
在$filter查询中使用这些字符之前,必须将URL编码为%3D和%2B。当它们采用URL编码时,我可以使用MS Graph查找原始电子邮件。在Microsoft Graph v1.0和beta版中,您可以通过在API请求中发送额外的HTTP头来获取“不可变ID”:
首选:IdType=“ImmutableId”
我用斜体字写了immutable,因为这是微软使用的术语。请注意以下注意事项,如果出现以下情况,ID将发生更改:
- 用户将项目移动到存档邮箱李>
- 用户导出项目(到PST,作为MSG文件等),并将其重新导入邮箱李>
- 用户创建草稿,然后发送李>
POST https://graph.microsoft.com/beta/me/translateExchangeIds
{
"inputIds" :
[
"AQMkAGM2…"
],
"targetIdType" : "restImmutableEntryId",
"sourceIdType" : "restId"
}
这将给您以下答复:
HTTP 200 OK
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.convertIdResult)",
"value": [
{
"targetId": "AAkALgAA...",
"sourceId": "AQMkAGM2..."
}
]
}
对,所以我没有使用Graph的ID属性。此引用ID/邮件ID来自电子邮件本身的标题,当电子邮件更改用户邮箱中的位置时不应更改。我正在从标题中提取引用消息ID,该标题应该是原始电子邮件的internetMessageId,但图中除了标题中的实际内容外,还显示了消息ID/internetMessageId,因为它以某种方式被编码或更改(参见问题中的示例)。如果我在Outlook中打开转发的和原始的电子邮件,并在其中查看标题,则会显示该值,这是有意义的。它们共享该公共数据点。但当我去图表,ID不工作,它有一些如何修改它,并期待您使用修改后的版本,如果你正在做$filter=internetMessageId eq任何其他想法,马克?您是我目前与Microsoft Graph space的最佳连接。我尝试了另一个测试,其中一位同事从我们租户的Office 365帐户向我发送了一条消息,然后我将其转发到另一个邮箱,引用消息ID和消息ID(图中的internetMessageID)保持不变,我的用例工作得很好。也许Graph只对外部发件人的internet邮件ID执行此操作?我对它所做的修改很满意,我只需要了解如何重现它所做的,这样我就可以从引用标题中找到具有消息ID的消息
您应该从EWS、Graph和Outlook REST API中获得相同的ID
您是对的,我应该,我想说的是,当消息来自某些外部发件人(如Gmail)时,我从Graph获得的值与其他人的值不一样。如果是这种情况,请转到Azure门户并提交问题,好吗?下面是如何提交它
HTTP 200 OK
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.convertIdResult)",
"value": [
{
"targetId": "AAkALgAA...",
"sourceId": "AQMkAGM2..."
}
]
}