首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GraphServiceClient并获取附加数据

GraphServiceClient并获取附加数据
EN

Stack Overflow用户
提问于 2022-04-29 13:41:42
回答 1查看 873关注 0票数 6

我使用GraphServiceClient从Outlook获取消息。

代码语言:javascript
运行
复制
var messages = await _graphServiceClient.Me.MailFolders[folderId].Messages.Request()
    .Header("Prefer", "outlook.body-content-type=\"text\"")
    .Filter($"createdDateTime gt {greaterDate} and createdDateTime lt {lessDate}")
    .Top(int.MaxValue).GetAsync();

请求最多可获得1000项。

我想得到其他的信息,并跟随文档

我的代码:

代码语言:javascript
运行
复制
var pageIterator = PageIterator<Message>
        .CreatePageIterator(
            _graphServiceClient,
            messages,
            // Callback executed for each item in
            // the collection
            (m) =>
            {
                return true;
            },
            // Used to configure subsequent page
            // requests
            (req) =>
            {
                // Re-add the header to subsequent requests
                req.Header("Prefer", "outlook.body-content-type=\"text\"");
                return req;
            });

await pageIterator.IterateAsync();

但当我调用我的密码时什么都没发生。它看起来就像在pageIterator.IterateAsync();之后,它是无穷大循环。

怎么啦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-02 02:41:49

我发现了使用Top查询的列表消息的限制。以下这句话来自列表消息api

根据页大小和邮箱数据,从邮箱获取邮件可能会引发多个请求。默认页面大小为10条消息。使用$top自定义页面大小,范围为1和1000。

OData 顶参数的描述。

$top的最小值为1,最大值取决于相应的API。

=================================================

.Top(int.MaxValue),恐怕你最好把它的值设置为999,因为我不确定它的最大值是否有限制。我还测试了我的方面的Iterator,它真的花了很多时间,所以我添加了一个count,就像文档显示的那样。

代码语言:javascript
运行
复制
public async Task<string> mailsAsync() {
            //var mail = await _graphServiceClient.Me.Messages.Request().GetAsync();
            int count = 0;
            var messages = await _graphServiceClient.Me.Messages
                                .Request()
                                .Header("Prefer", "outlook.body-content-type=\"text\"")
                                .Select(e => new {
                                    e.Sender,
                                    e.Subject,
                                    e.Body
                                })
                                .Top(300)
                                .GetAsync();

            var pageIterator = PageIterator<Message>
                .CreatePageIterator(
                    _graphServiceClient,
                    messages,
                    (m) =>
                    {
                        Console.WriteLine(m.Subject);
                        count++;
                        return true;
                    },
                    // Used to configure subsequent page
                    // requests
                    (req) =>
                    {
                        // Re-add the header to subsequent requests
                        req.Header("Prefer", "outlook.body-content-type=\"text\"");
                        return req;
                    }
                );

            await pageIterator.IterateAsync();
            count = count + 1;
            return "success";
        }

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72058915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档