Mar*_*ina 1 c# microsoft-graph-api
我在计算邮箱消息数时遇到问题。我使用 c# 和 Microsoft.Graph 1.18.0
这是我的代码
public async Task<long> GetItemsCountAsync(string userId)
{
var countOption = new QueryOption("$count", "true");
var request = ServiceClient.Value.Users[userId].Messages.Request();
request.QueryOptions.Add(countOption);
var resultMessages = new List<Message>();
var count = 0L;
do
{
var messagesResult = await request.GetAsync();
if (messagesResult.AdditionalData != null && messagesResult.AdditionalData.TryGetValue("@odata.count", out var messagesCount))
{
count = (long)messagesCount;
}
resultMessages.AddRange(messagesResult);
request = messagesResult.NextPageRequest;
}
while (request != null);
return count;
}
Run Code Online (Sandbox Code Playgroud)
我最终有 count = 1417 和 resultMessages.Count = 760
我错过了什么?
感谢您的任何帮助!
所提供的示例一切都很好。$count此处List messages端点似乎不受信任,因为 API 不会返回来自指定搜索文件夹的消息的准确计数(例如,请参阅此答案以获取更多详细信息)。
要获取消息计数,List mailFolders可以使用端点:
GET /users/{id | userPrincipalName}/mailFolders?$select=totalItemCount
Run Code Online (Sandbox Code Playgroud)
其中totalItemCount代表邮件文件夹中的项目数。
C# 示例
var folders = await graphClient.Users[userId].MailFolders.Request().Select(f =>f.TotalItemCount).GetAsync();
var totalMessagesCount = folders.Sum(folder => folder.TotalItemCount);
Run Code Online (Sandbox Code Playgroud)