从Gmail API检索100多个邮件ID

时间:2018-09-07 12:45:44

标签: c# gmail-api google-api-dotnet-client

我的gmail帐户中有3000封电子邮件。我想创建所有发件人的汇总列表,以便更有效地清理收件箱。我不需要下载邮件正文或附件。

我使用此示例来入门(https://developers.google.com/gmail/api/quickstart/dotnet),尽管现在我不知道执行该代码时如何返回100个以上的消息ID:

href

我所做的研究表明,我需要使用批处理请求,并且根据我发现的信息,我无法使其适应我要完成的任务。我的理解是,我将使用批处理请求获取所有邮件ID,然后使用3000个单独的电话获取收件箱中每封电子邮件的实际寄达,主题和日期?

2 个答案:

答案 0 :(得分:2)

您可以使用分页获取完整列表。

传递上一页的页面令牌,以获取对Users.Messages.List的下一个调用(不要传递到第一个调用中以开始操作)。当结果不包含任何消息时,检测结束。

这使您可以获取邮箱中的所有邮件。

NB 。我建议您使代码异步:如果要阅读的消息多于几条,则可能需要花费相当多的时间才能全部获得。

答案 1 :(得分:0)

您还可以使用PageStreamer来获取其余结果。

var pageStreamer = new PageStreamer<Google.Apis.Gmail.v1.Data.Message, UsersResource.MessagesResource.ListRequest, ListMessagesResponse, string>(
            (request, token) => request.PageToken = token,
            response => response.NextPageToken,
            response => response.Messages);
var req = service.Users.Messages.List("me");
req.MaxResults = 1000;
foreach (var result in pageStreamer.Fetch(req))
    {
            Console.WriteLine(result.Id);
    }

只要有其他结果需要,此代码将继续运行。 Batching真的无法在这里为您提供帮助,因为无法知道下一页令牌将是什么。