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

问题描述

这是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();

解决方法

我正在使用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()