无法通过 Microsoft Graph 获取消息的接收方

Unable to fetch received-by of a message via Microsoft Graph

根据我之前的 question,我正在尝试从特定文件夹(如已删除邮件)中获取邮件。

我正在按照此文档实现上述场景:https://docs.microsoft.com/en-us/graph/api/user-list-messages

GET https://graph.microsoft.com/v1.0/me/mailFolders/deleteditems/messages

使用上述查询,我​​得到了所有已删除的邮件,其中包含很多我不需要的信息(html 代码)。

我想通过仅检索特定属性(如主题、重要性、发件人、sentDateTime、receiver、receivedDateTime)来自定义响应。

我尝试使用 $select:

查询类似下面的内容
GET https://graph.microsoft.com/v1.0/me/mailFolders/deleteditems/messages?$select= subject, importance, sender, sentDateTime, receiver, receivedDateTime.

但我收到如下 400:BadRequest 错误:

{
"error": {
  "code": "RequestBroker--ParseUri",
  "message": "Could not find a property named 'receiver' on type 'Microsoft.OutlookServices.Message'.",
  "request_id": "54f9adf-7435-5r8c-a3g6-48gx6343ac",
  "date": "2022-05-24T07:35:06"
  }
}

如何将收件人详细信息与发件人详细信息一起包括在内???

我试图在我的环境中重现相同的内容并得到相同的错误。

正如我在评论中提到的,没有这样的属性名为'receiver'。要解决该错误,请尝试在查询中删除 receiver 并检查响应。

如果您想在发件人详细信息的同时包含收件人详细信息,您可以尝试包括 toRecipients 以提供有关信息像下面这样的接收器作为替代:

GET https://graph.microsoft.com/v1.0/me/mailFolders/deleteditems/messages?$select=subject,importance,sender,sentDateTime,receivedDateTime,toRecipients

响应:

更新: 正如@Dmitry Streblechenko 提到的,这仅在您是这些消息的唯一接收者时才有效。如果有多个收件人,请花点时间按照他的建议了解 MAPI 属性和 OutlookSpy。

首先,没有接收器属性。由于消息来自您明确连接的邮箱,接收者不会是邮箱所有者吗?除非邮件是从 Outlook 中的另一个邮箱中拖出的。

请注意,您始终可以在图形查询中请求任何 MAPI 属性。在您的特定情况下,您可能需要 PR_RECEIVED_BY_NAME / PR_RECEIVED_BY_EMAIL_ADDRESS / PidTagReceivedRepresentingSmtpAddress MAPI 属性。要检索 PidTagReceivedRepresentingSmtpAddress 属性,请使用

?$expand=singleValueExtendedProperties($filter=id eq 'String 0x5D08')

您可以在 OutlookSpy(我是它的作者)中查看可用的 MAPI 属性并构造请求它们的图形查询 - 单击 IMessage 按钮查看所选消息的所有可用 MAPI 属性或单击消息(图) |查询参数 |展开。