【问题标题】:Get Google Group emails with Gmail API使用 Gmail API 获取 Google 群组电子邮件
【发布时间】:2019-01-22 06:50:25
【问题描述】:

我正在努力获取电子邮件的大型文本语料库。没有 API 可以读取 Google Group 中的消息。因此,另一种方法是使用属于该组的 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 吗?

【问题讨论】:

  • 我也在寻找同样的东西。看起来您需要对返回的每个 id 使用 get 方法,并且您可以指定 fields 参数以仅返回您需要的数据(以获得更好的性能和更少的带宽使用)。

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


【解决方案1】:

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

to:support-dev-group@wso2.com

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

接下来,要获取给定消息 ID 的完整消息,请使用 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 来减少 响应的大小,因为只有 labelIds 可能会改变。

将更新合并到您的缓存结果中。您的应用程序应该 存储最近一条消息的 historyId(第一条消息在 列表响应)用于未来的部分同步。

见:https://developers.google.com/gmail/api/guides/batch

【讨论】:

  • 我有另一个问题,从发送到组的电子邮件中下载附件。我使用 gmail api 访问组中一位用户的 gmail 帐户。可以列出电子邮件,但无法下载这些发送到群组的电子邮件中的附件。你知道我该怎么做吗?这是我的 SO 问题stackoverflow.com/questions/53729364/… 谢谢
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 2017-04-14
  • 2014-08-19
  • 2018-11-03
  • 1970-01-01
相关资源
最近更新 更多