如何使用 Microsoft graph api 检索 Office 365 用户邮箱中所有未分类的电子邮件计数

How to retrieve all uncategorized emails count in office 365 user mailboxes using Microsoft graph api

我目前正在使用 PowerShell 脚本来检索 Office 365 平台中用户邮箱中的未分类电子邮件计数。我正在使用 Microsoft Graph api 来实现这一点。

进一步解释,office 365 允许用户使用颜色对电子邮件进行分类,例如对于我的组织,如果您处理完一封电子邮件,则需要使用绿色进行分类,如果您当前正在处理电子邮件,你用黄色分类'。

现在我需要能够检索 total count 没有分类颜色的电子邮件。

已经尝试了下面的端点,但是它拉取了不正确的响应。

$accessToken = "tokenhere"
$mail_user = "useremailhere"
$graphuri = "https://graph.microsoft.com/v1.0/users/$mail_user/mailfolders/Inbox/messages?$select=categories&$filter=categories/any(a:a+eq+'null+Category')&count=true"

$resp = Invoke-RestMethod -Method get -Uri $graphuri -ContentType "application/json" -Headers @{Authorization=("bearer {0}" -f $accessToken)}

$resp | fl

端点继续返回 124 的相同邮件计数,即使在继续并在该特定邮箱中对更多电子邮件进行分类之后也是如此。

如果我尝试查询特定颜色,我会使用以下端点得到肯定的结果。


https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messages?$select=subject,receivedDateTime,categories&$filter=categories/any(a:a+eq+'Green+Category')&count=true

我做错了什么。

如果你想获得没有类别的消息你需要使用 not 运算符和 any 运算符。

GET https://graph.microsoft.com/v1.0/me/mailfolders/Inbox/messages?
    $select=categories&$filter=NOT(categories/any())&count=true

GET https://graph.microsoft.com/v1.0/users/$mail_user/mailfolders/Inbox/messages?
    $select=categories&$filter=NOT(categories/any())&count=true

我没有在 any 运算符中指定布尔表达式。这意味着 $filter=categories/any() 会 return 任何类别的所有消息,但您需要相反的情况,可以通过使用 not 运算符来实现。