0

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

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

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

我尝试过的:我查看了这些示例,没有看到任何关于这样过滤的内容。我还查看了OData 查询参数并深入研究了过滤器参数。问题是我不太确定我什至可以过滤什么。我确实看到有一个发件人参数 - 但鉴于我已经通过 OAuth 连接并且没有要求用户提供他们的电子邮件地址,我不确定我是否有一种简单的过滤方法。

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

谢谢你的时间 :)

4

1 回答 1

0

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

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

于 2019-03-15T18:23:24.500 回答