目标:我希望能够过滤“ List Messages” API,以便仅返回发送给用户的电子邮件,而不返回任何存在于任何地方的消息(例如由用户发出)。
现在,如果查询此特定的API,则会获得所有文件夹(包括“已删除邮件”和“混乱”文件夹)中所有消息的列表。
我知道我可以过滤isDraft eq false
来删除草稿-但我不知道是否有任何过滤器可以说不包括用户发送的消息。
我尝试过的事情:我查看了examples,但没有看到任何有关这种过滤的信息。我还研究了OData Query Params并挖掘了filter参数。问题是我不确定我什至可以过滤。我确实看到有一个发件人参数-但是鉴于我已经通过OAuth进行了连接并且没有要求用户提供其电子邮件地址,所以我不确定是否有一种简单的方法可以对此进行过滤。
从理论上讲,我可以先向https://graph.microsoft.com/beta/me/端点发出一个请求,以获取userPrincipalName,然后在调用from/emailAddress/address ne '<userPrincipalName>'
端点时在/me/messages
上添加一个过滤器-但这会增加一倍我需要进行的API调用次数。是我唯一的选择,还是有更好的方法来解决这个问题?
感谢您的时间:)
答案 0 :(得分:0)
没有任何过滤器参数可以直接实现此目的。如果要过滤掉已发送的消息,则需要解码base64编码的JWT访问令牌并提取userPrincipalName
或调用/me
端点并检索userPrincipalName
从那开始。有了它之后,您可以添加from/emailAddress/address ne '<userPrincipalName>'
的过滤器。
请注意,如果您要过滤很多东西,并且有一个“ order by”参数,则需要将该参数包含在过滤器中,否则会收到有关太多过滤器的错误消息。