我正在努力获取电子邮件的大型文本语料库。没有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吗?
答案 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(第一个消息在 列表响应),以便将来进行部分同步。