使用InternetMessageId获取Exchange在线邮件详细信息

时间:2018-10-07 08:34:52

标签: outlook office365 exchange-server

当我从其他MS审核来源获得事件SendAs时,它几乎不包含消息本身的信息,但是具有InternetMessageId标识符。
我正在尝试使用它获取其他信息,但只会收到错误。

首先使用w MessageTraceDetail report,我尝试通过将InternetMessageId用作MessageIdMessageTraceId来获取,两者均返回w /错误:

GET https://reports.office365.com/ecp/reportingwebservice/reporting.svc/MessageTraceDetail
查询:"$filter" -> "MessageId eq guid'<AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE@mycorp.onmicrosoft.com>'"

{ "odata.error": { "code": "", "message": { "lang": "en-US", "value": "Unrecognized 'Edm.Guid' literal 'guid'<AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE@mycorp.onmicrosoft.com>'' at '13' in 'MessageId eq guid'<AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE@mycorp.onmicrosoft.com>''." } } }

其次,带有Microsoft Graph API of get message

我创建了一个AD应用程序,并授予了所有与“邮件”相关的“应用程序”和“委派”权限。

该请求带有用户主体名称和消息ID:

GET https://graph.microsoft.com/beta/users/myuser@mycorp.onmicrosoft.com/messages/%3AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE@mycorp.onmicrosoft.com%3E

产生通用500 Internal Server Error

我在做什么错了?

是否有其他可以使用InternetMessageId获取消息详细信息的API?

2 个答案:

答案 0 :(得分:0)

  
    

获取https://reports.office365.com/ecp/reportingwebservice/reporting.svc/MessageTraceDetail     查询:“ $ filter”->“ MessageId eq guid”“

  

虽然MessageId可以包含GUID,但它不是Guid数据类型,因此只需将其查询为String即可,但是您需要转义该字符串才能使用它,例如

System.Uri.EscapeDataString((“ MessageId eq'” + InternetMessageId +“'”)

  
    

https://graph.microsoft.com/beta/users/myuser@mycorp.onmicrosoft.com/messages/%3AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE@mycorp.onmicrosoft.com%3E

  

此处引用的ID是该商品的Exchange存储标识符,该标识符不同于您必须使用InternetMessageId搜索消息的InternetMessageId,例如

https://graph.microsoft.com/v1.0/me/messages?$filter=internetMessageId eq '<AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE@mycorp.onmicrosoft.com>'

答案 1 :(得分:0)

您可以尝试以下Graph API请求:

https://graph.microsoft.com/v1.0/me/messages?$filter=internetMessageId eq '<1430948481468.34600@THCIE7Dev2.onmicrosoft.com>'

有关更多信息,请参见链接: Microsoft Graph API - find message by internetmessageid