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

问题描述

我具有以下使用Graph API获取消息的功能

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

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

解决方法

我认为您应该参考此document

根据页面大小和邮箱数据,从邮箱获取邮件可能会导致多个请求。默认页面大小为10条消息。要获取下一页消息,只需将@odata.nextLink中返回的整个URL应用于下一个get-messages请求。该URL包括您可能在初始请求中指定的所有查询参数。

,

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

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)
            {
                await msgs.NextPageRequest.GetAsync();
                messages.AddRange(msgs.CurrentPage);
            }