在新的 Gmail API 中批量提取电子邮件

Posted

技术标签:

【中文标题】在新的 Gmail API 中批量提取电子邮件【英文标题】:Bulk-fetching emails in the new Gmail API 【发布时间】:2014-08-25 03:00:11 【问题描述】:

我正在使用 Google 新发布的 Gmail API 的 python 版本。

以下调用仅返回消息 ID 列表:

service.users().messages().list(userId = 'me').execute()

但是我只有一个消息 ID 列表,需要遍历它们并一个接一个地获取它们。

有没有办法在一次调用中获取 id 列表的整个消息内容? (类似于 Google Calendar API 中的操作方式)?

如果还不支持,Google 是否会考虑在 API 中添加此功能?

更新

这是对我有用的解决方案:batch = BatchHttpRequest() for msg_id in message_ids: batch.add(service.users().messages().get(userId = 'me', id = msg_id['id']), callback = mycallbackfunc) batch.execute()

【问题讨论】:

你说的是批量请求吗? 是的,完全正确。我想在一个请求中获取多条消息。 【参考方案1】:

这是 Java 中的批处理请求示例,其中我使用线程 ID 获取所有线程。这可以很容易地适应您的需要。

BatchRequest b = service.batch();
//callback function. (Can also define different callbacks for each request, as required)
JsonBatchCallback<Thread> bc = new JsonBatchCallback<Thread>() 

    @Override
    public void onSuccess(Thread t, HttpHeaders responseHeaders)
            throws IOException 
        System.out.println(t.getMessages().get(0).getPayload().getBody().getData());
    

    @Override
    public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders)
            throws IOException 

    
;

// queuing requests on the batch requests
for (Thread thread : threads) 
    service.users().threads().get("me", threads.getId()).queue(b, bc);



b.execute();

【讨论】:

谢谢!这似乎是我需要的。只需在此处阅读 python 版本文档:developers.google.com/api-client-library/python/guide/batch。我试试看。 @BaruchOxman 你能分享你的python版本吗?我有点迷路了。 @st4ck0v3rfl0w - 我用解决方案示例更新了我的问题【参考方案2】:

这是对我有用的解决方案:

batch = BatchHttpRequest()
for msg_id in message_ids:
    batch.add(service.users().messages().get(userId='me', id=msg_id['id']), callback=mycallbackfunc)
batch.execute()

【讨论】:

你能告诉我如何从批处理请求中呈现对 html 的整个响应......我正在处理 gmail api,我在回调函数中得到响应,但我无法渲染它....我对此有点困惑 Rajat,由于您的问题与此问题没有直接关系,我建议您就您的问题重新开始讨论,以获得最大的关注和最多的回复。 我已经做了这里是 URL ***.com/questions/29916079/… 谢谢 我在任何地方都找不到它。但总结一下,回调函数将接收3个参数。从我在调试中看到的,第一个是消息索引,第二个是一是信息本身。第三个不知道

以上是关于在新的 Gmail API 中批量提取电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

从 Gmail API 批量获取超过 10k 封电子邮件的电子邮件发件人

使用 Gmail Api 线程化电子邮件 [在新线程化要求之后]

在python中使用gmail api从电子邮件中提取表格

无法通过 gmail api 向多个发件人发送电子邮件

Google Apps 脚本 - 将 gmail 中的数据提取到电子表格中

是否有可能使用gmail -API从一个特定的发件人处收到最近5封电子邮件