我正在努力获得大型文本的电子邮件语料库。在Google中没有允许读取消息的API。因此,另一种方法是使用Gmail帐户,Gmail帐户是该组的成员。通过使用这个Gmail,我可以检查发送给该组的所有消息。我使用python和Gmail来获取邮件。我面临的问题是,我无法从团体中获取电子邮件。
results = service.users().messages().list(userId='me',q="from:support-dev-group@wso2.com", maxResults=10).execute()
当我用另一个普通用户id替换from:时,它正在工作。当我用组电子邮件id替换from:时,结果为零。我能得到通过我的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吗?
发布于 2018-08-18 12:18:22
对于第一部分,您的查询是向后的:电子邮件消息从用户发送到组。此查询应返回发送给组的所有消息:
to:support-dev-group@wso2.com(您可以很容易地在Gmail中测试它,因为它在搜索框中使用了相同的查询规范)。
接下来,要获得给定消息id的完整消息,请使用users.messages.get和格式' full‘选项,请参见:https://developers.google.com/gmail/api/v1/reference/users/messages/get
您确实必须对每条消息调用一次,但是您可以提交一批get请求来高效地执行一次。然后,您可以使用历史ids只获取新消息:
来自“同步客户端与Gmail”的https://developers.google.com/gmail/api/guides/sync
调用messages.list检索消息ID的第一页。 为列表请求返回的每个消息创建一个messages.get请求的批处理请求。如果应用程序显示消息内容,则应在应用程序第一次检索消息并缓存结果时使用format=FULL或format=RAW,以避免额外的检索操作。如果要检索以前缓存的消息,则应该使用format=MINIMAL来减小响应的大小,因为只有labelIds可能会更改。 将更新合并到缓存的结果中。您的应用程序应该存储最近消息(列表响应中的第一条消息)的historyId,以便将来进行部分同步。
https://stackoverflow.com/questions/51857925
复制相似问题