无法通过 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 属性或单击消息(图) |查询参数 |展开。
根据我之前的 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 属性或单击消息(图) |查询参数 |展开。