在 C# 中使用 Microsoft Graph API 获取所有电子邮件

jay*_*jay 4 c# .net-core microsoft-graph-mail microsoft-graph-api

我有以下函数来使用 Graph API 获取消息

var client = new GraphServiceClient(authenticationProvider);
var messages = await client.Users["useer@domain.com"].Messages
     .Request()
     .GetAsync();
Run Code Online (Sandbox Code Playgroud)

我只能收到最新的 10 条消息。如何获取所有消息?我试图在这里查看微软文档:https://learn.microsoft.com/en-us/graph/api/message-get?view=graph-rest-1.0&tabs=csharp但找不到任何线索。

jay*_*jay 7

经过谷歌搜索和尝试错误后找到了答案。

IUserMessagesCollectionPage msgs = await _client.Users[user@domain.com].Messages.Request()
                .Filter("put your filter here")
                .GetAsync();
            List<Message> messages = new List<Message>();
            messages.AddRange(msgs.CurrentPage);
            while (msgs.NextPageRequest != null)
            {
                msgs = await msgs.NextPageRequest.GetAsync();
                messages.AddRange(msgs.CurrentPage);
            }
Run Code Online (Sandbox Code Playgroud)

  • 我相信这是正确的答案,但有一点需要注意。它需要保存消息的状态,否则将陷入无限循环。需要是 msgs = wait msgs.NextPageRequest.GetAsync(); (2认同)