在 C# 中使用 Microsoft Graph API 获取所有电子邮件消息
Get all email message using Microsoft Graph API in c#
我有以下函数可以使用 Graph API
获取消息
var client = new GraphServiceClient(authenticationProvider);
var messages = await client.Users["useer@domain.com"].Messages
.Request()
.GetAsync();
我只能获取最新的 10 条消息。我如何获得所有消息?我试图在这里查看微软文档: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);
}
你可以用 .Top()
:
var client = new GraphServiceClient(authenticationProvider);
var messages = await client.Users["user@domain.com"].Messages
.Request()
.Top(100)
.GetAsync();
我有以下函数可以使用 Graph API
获取消息var client = new GraphServiceClient(authenticationProvider);
var messages = await client.Users["useer@domain.com"].Messages
.Request()
.GetAsync();
我只能获取最新的 10 条消息。我如何获得所有消息?我试图在这里查看微软文档: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);
}
你可以用 .Top()
:
var client = new GraphServiceClient(authenticationProvider);
var messages = await client.Users["user@domain.com"].Messages
.Request()
.Top(100)
.GetAsync();