Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microsoft graph api 如何从标题中获取可用的电子邮件引用id,以便在Microsoft Graph查询中使用?_Microsoft Graph Api_Outlook Restapi - Fatal编程技术网

Microsoft graph api 如何从标题中获取可用的电子邮件引用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

我正在尝试使用Office 365中转发电子邮件的电子邮件标题中的引用邮件ID,然后查找具有该邮件ID的原始电子邮件

转发电子邮件标题中的引用ID将显示如下所示的内容。注意:我从Microsoft Graph中获取这些邮件头,方法是使用发件人/主题将
&$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文件等),并将其重新导入邮箱
  • 用户创建草稿,然后发送
您还可以通过以下请求将现有ID转换为不可变ID:

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..."
    } 
  ] 
}