将 Microsoft Graph 列表消息 API 过滤为仅收到的消息

Filter Microsoft Graph List Messages API to only received messages

目标: 我希望能够将“List Messages”API 过滤为仅发送 return 封电子邮件发送给用户,而不是任何存在于任何地方的消息(例如用户发送的消息)。

现在,如果您查询这个特定的 API,您将获得所有文件夹(包括已删除邮件和杂乱文件夹)中所有邮件的列表。

我知道我可以过滤 isDraft eq false 以删除草稿 - 但我不知道是否有任何过滤器说不包括用户发送的消息。

我尝试过的: 我查看了 examples and didn't see anything about filtering like this. I've also taken a look at the OData Query Params and dug into the filter 参数。问题是我不太确定我什至可以过滤什么。我确实看到有一个发件人参数 - 但考虑到我已经通过 OAuth 连接并且没有要求用户提供他们的电子邮件地址,我不确定我是否有一种简单的方法来过滤它。

理论上,我可以先向 https://graph.microsoft.com/beta/me/ 端点发出请求以获取 userPrincipalName,然后在我调用 /me/messages 端点时在 from/emailAddress/address ne '<userPrincipalName>' 上添加过滤器 - 但这是可行的将我需要拨打的 API 电话数量加倍。这是我唯一的选择还是有更好的方法来解决这个问题?

感谢您的宝贵时间:)

没有过滤器参数可以直接实现这一点。如果您想过滤掉已发送的消息 - 您需要解码 base64 编码的 JWT 访问令牌并提取 userPrincipalName 或调用 /me 端点并检索 userPrincipalName从那个。完成后,您可以添加 from/emailAddress/address ne '<userPrincipalName>'.

的过滤器

请注意,如果您要过滤很多东西并且您有一个 "order by" 参数,您需要将该参数包含在您的过滤器中,否则您会收到有关过滤器太多的错误消息。