我需要在INBOX中获取最后100条消息(仅限标题).为此我正在使用IMAP扩展来搜索然后获取消息.这是通过两个请求(SEARCH然后是UID FETCH)完成的. 什么是Gmail API相当于在一个请求中获取多条消息
什么是Gmail API相当于在一个请求中获取多条消息?
我所能找到的只是一个批处理API,这看起来更麻烦(编写一长串消息:用纯HTTP代码包装获取请求). 它在Gmail API中与在IMAP中几乎相同.两个请求:首先是messages.list来获取消息ID.然后是一个(批处理的)message.get来检索你想要的那些.根据您使用的语言,客户端库可能有助于批量请求构建.
A batch request is a single standard HTTP request containing multiple Google Cloud Storage JSON API calls, using the multipart/mixed content type. Within that main HTTP request, each of the parts contains a nested HTTP request.
来自: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)