我需要获取收件箱中的最后 100 条消息(仅限标题)。为此,我目前正在使用 IMAP 扩展来搜索并获取消息。这是通过两个请求完成的(SEARCH
进而UID FETCH
).
Gmail API 相当于在一个请求中获取多封邮件的功能是什么?
我能找到的只是一个批处理API,这看起来更麻烦(组成一长串messages:get
请求封装在纯 HTTP 代码中)。
Gmail API 中的内容与 IMAP 中的内容几乎相同。两个请求:第一个是 messages.list 来获取消息 id。然后(批量)message.get 来检索您想要的消息。根据您使用的语言,客户端库可能有助于批量请求构建。
批量请求是包含多个 Google Cloud Storage JSON API 调用的单个标准 HTTP 请求,使用多部分/混合内容类型。在该主 HTTP 请求中,每个部分都包含一个嵌套的 HTTP 请求。
From: https://developers.google.com/storage/docs/json_api/v1/how-tos/batch https://developers.google.com/storage/docs/json_api/v1/how-tos/batch
这实际上并不难,即使没有 python 客户端库(仅使用 httplib 和 mimelib),我也花了大约一个小时在 python 中弄清楚它。
这是执行此操作的部分代码片段,再次使用直接 python。希望它能清楚地表明,没有涉及太多:
msg_ids = [msg['id'] for msg in body['messages']]
headers['Content-Type'] = 'multipart/mixed; boundary=%s' % self.BOUNDARY
post_body = []
for msg_id in msg_ids:
post_body.append(
"--%s\n"
"Content-Type: application/http\n\n"
"GET /gmail/v1/users/me/messages/%s?format=raw\n"
% (self.BOUNDARY, msg_id))
post_body.append("--%s--\n" % self.BOUNDARY)
post = '\n'.join(post_body)
(headers, body) = _conn.request(
SERVER_URL + '/batch',
method='POST', body=post, headers=headers)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)