使用 Gmail API 获取 Google Group 电子邮件



我正在努力获取电子邮件的大型文本语料库。没有允许在 Google 群组中读取消息的 API。因此,另一种方法是使用作为该组成员的Gmail帐户。通过使用此Gmail,我可以检查发送到该组的所有邮件。 我正在使用python和Gmail API来获取邮件。我面临的问题是,我无法获取来自群组的电子邮件。

results = service.users().messages().list(userId='me',q="from:support-dev-group@wso2.com", maxResults=10).execute()

当我用另一个普通用户 ID 替换from:时,它正在工作。当我用组电子邮件 ID 替换from:时,它给出的结果为零。我可以获得通过我的 Gmail 获取群组 gmail 的实际代码吗?

第二个问题是,

当我使用某人的邮件查询时:

results = service.users().messages().list(userId='me',q="from:xyz@wso2.com", maxResults=10).execute()

我得到这样的结果

{'resultSizeEstimate': 82, 'messages': [{'id': '1653929b0b414390', 'threadId': '1644c19f390faf28'}, {'id': '165330aaa5bb9134', 'threadId': '16532ef13e7eec8d'}......

这里它只返回消息 ID。为了获取带有标题的正文的邮件,我必须再次查询每个 id。我无法在一个查询中获取完整的 JSON?

对于第一部分,您的查询是反向的:电子邮件从用户发送到组。此查询应返回发送到组的所有邮件:

to:support-dev-group@wso2.com

(您可以在 Gmail 中轻松测试此功能,因为它在搜索框中使用相同的查询规范(。

接下来,要获取给定消息 ID 的完整消息,请使用格式为"full"选项的users.messages.get,请参阅:https://developers.google.com/gmail/api/v1/reference/users/messages/get

您必须为每条消息调用一次,但您可以提交一批 get 请求以有效地执行此操作一次。 然后,您可以使用历史 ID 仅获取新消息:

来自"将客户端与 Gmail 同步"https://developers.google.com/gmail/api/guides/sync

调用 messages.list 以检索消息 ID 的第一页。

创建邮件的批处理请求。获取每个消息的请求 列表请求返回的消息。如果应用程序显示 消息内容,您应该首先使用 format=FULL 或 format=RAW 应用程序检索消息并将结果缓存到 避免其他检索操作。如果您正在检索 以前缓存的消息,您应该使用 format=MINIMAL 来减少 响应的大小,因为只有标签 ID 可能会更改。

将更新合并到缓存的结果中。您的应用程序应 存储最新消息的 historyId(其中的第一条消息 列表响应(,以便将来进行部分同步。

请参阅:https://developers.google.com/gmail/api/guides/batch

最新更新