【问题标题】:Get all email message using Microsoft Graph API in c#在 c# 中使用 Microsoft Graph API 获取所有电子邮件
【发布时间】:2020-10-21 02:43:59
【问题描述】:

我有以下函数可以使用 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 但找不到任何线索。

【问题讨论】:

  • 不是我要找的答案。我放的是 C# 代码而不是 URL。

标签: c# .net-core microsoft-graph-api microsoft-graph-mail


【解决方案1】:

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

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);
            }

【讨论】:

  • 我相信这是正确的答案,但需要注意一点。它需要保存 msgs 的状态,否则会陷入无限循环。需要是 msgs = await msgs.NextPageRequest.GetAsync();
【解决方案2】:

我觉得你应该参考这个document

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

【讨论】:

    【解决方案3】:

    您可以使用.Top()

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多