首页 文章

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

提问于
浏览
0

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

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

如果我发出第三个请求,在原始邮件发出后2分钟,并且对最近100封邮件中的一封邮件有回复,它仍会返回最近的100封邮件 .

这个问题是它只返回消息id和线程id,而不是是否有新的回复 . 这意味着我必须检查我本地存储的每条消息,或者100条返回消息中的每条消息,只是为了知道是否有回复 .

有效的方式,您无法通过api“检查”您的电子邮件,因为如果您存储了10000封邮件并且您正在检查所有这些邮件的回复,那么您将在一天内用完整个API“请求数”分配!

你有什么问题?

当然我可以使用pop3或imap,但为什么我可以使用像/ list_recent这样的东西?

1 回答

  • 0

    您一定要查看Gmail API文档的这一部分:https://developers.google.com/gmail/api/guides/push

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

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

    如果您不需要对实时更改做出反应,也许您可以定期调用 /history endpoints ,但它的规模效率肯定会低一些 .

    要使这项工作需要一些工作,但最终你会得到一个非常有效的系统,能够对实时的变化作出反应 .

相关问题