gmail API Users.messages:列表未得到回复

时间:2018-07-23 03:09:17

标签: google-api gmail gmail-api google-apis-explorer

如果我向Users.messages.list的gmail API请求,它将返回100条最新消息。

如果我再次提出请求,则一分钟后又没有新的电子邮件,它将返回相同的100条最新消息。

如果我发出第三次请求,则在原始请求后2分钟,并且对100条最新消息之一进行了答复,它仍将返回100条最新消息。

此问题是它仅返回消息ID和线程ID,而不返回是否有新答复。那意味着我将不得不检查我本地存储的每条消息,或者检查返回的100条消息中的每条消息,以了解是否有答复。

一种有效的方式,您无法通过api“检查”电子邮件,因为如果您已存储10000条消息,并且正在检查所有消息的答复,则将用尽整个API的“请求数”分配一天!

您Google怎么了?

确定可以使用pop3或imap,但是为什么只能使用/ list_recent之类的东西呢?

1 个答案:

答案 0 :(得分:0)

您绝对应该看一下Gmail API文档的这一部分:https://developers.google.com/gmail/api/guides/push

基本上,它说明了如何通过Gmail帐户中的消息传递队列协议Pub / Sub来设置Gmail帐户上的“监视”并接收通知(新电子邮件,已删除电子邮件,添加标签...)。谷歌。

通知将包含historyId,这是Gmail帐户中的一个里程碑。然后,使用/history endpoint,您将获得自此历史记录以来添加和/或删除的电子邮件。您必须将您处理过的最新historyId存储在应用程序中的某个位置,以便您可以在下一个通知中查询正确的更改(而不遗漏任何内容)。

如果您不需要实时响应更改,也许您可​​以定期调用/history端点,但是在规模上肯定会降低效率。

要使它正常工作需要花费一些工作,但最终,您将获得一个非常高效的系统,能够对实时变化做出实时反应。