使用Gmail API获取Google网上论坛电子邮件

时间:2018-08-15 11:34:55

标签: python email gmail gmail-api google-groups

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

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

当我将from:替换为另一个普通用户ID时,它正在工作。当我将from:替换为群组电子邮件ID时,结果为零。我可以获取实际代码来通过我的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吗?

1 个答案:

答案 0 :(得分:0)

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

to:support-dev-group@wso2.com

(您可以在Gmail中轻松对其进行测试,因为它在搜索框中使用了相同的查询规范)。

接下来,要获取给定消息ID的完整消息,请使用users.messages.get和'full'格式选项,请参阅: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来减少   响应的大小,因为只有labelIds可能会更改。

     

将更新合并到缓存的结果中。您的申请应   存储最新消息的historyId(第一个消息在   列表响应),以便将来进行部分同步。

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