如果我向Users.messages.list的gmail API请求,它将返回100条最新消息。
如果我再次提出请求,则一分钟后又没有新的电子邮件,它将返回相同的100条最新消息。
如果我发出第三次请求,则在原始请求后2分钟,并且对100条最新消息之一进行了答复,它仍将返回100条最新消息。
此问题是它仅返回消息ID和线程ID,而不返回是否有新答复。那意味着我将不得不检查我本地存储的每条消息,或者检查返回的100条消息中的每条消息,以了解是否有答复。
一种有效的方式,您无法通过api“检查”电子邮件,因为如果您已存储10000条消息,并且正在检查所有消息的答复,则将用尽整个API的“请求数”分配一天!
您Google怎么了?
确定可以使用pop3或imap,但是为什么只能使用/ list_recent之类的东西呢?
答案 0 :(得分:0)
您绝对应该看一下Gmail API文档的这一部分:https://developers.google.com/gmail/api/guides/push
基本上,它说明了如何通过Gmail帐户中的消息传递队列协议Pub / Sub来设置Gmail帐户上的“监视”并接收通知(新电子邮件,已删除电子邮件,添加标签...)。谷歌。
通知将包含historyId
,这是Gmail帐户中的一个里程碑。然后,使用/history
endpoint,您将获得自此历史记录以来添加和/或删除的电子邮件。您必须将您处理过的最新historyId
存储在应用程序中的某个位置,以便您可以在下一个通知中查询正确的更改(而不遗漏任何内容)。
如果您不需要实时响应更改,也许您可以定期调用/history
端点,但是在规模上肯定会降低效率。
要使它正常工作需要花费一些工作,但最终,您将获得一个非常高效的系统,能够对实时变化做出实时反应。