【问题标题】:gmail API Users.messages: list is not getting repliesgmail API Users.messages:列表没有收到回复
【发布时间】:2018-07-23 03:09:17
【问题描述】:

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

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

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

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

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

谷歌你怎么了?

我当然可以使用 pop3 或 imap,但为什么我可以只使用 /list_recent 之类的东西?

【问题讨论】:

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


【解决方案1】:

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

基本上,它向您解释了如何通过 Pub/Sub(来自谷歌。

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

如果您不需要实时对变化做出反应,也许您可​​以定期调用/history 端点,但在规模上肯定会降低效率。

这需要做一些工作,但最终你会得到一个非常高效的系统,能够实时响应变化。

【讨论】:

  • 这是一个很好的解释。而不是首先使用 Pub/Sub,我将使用 /history endpoint] 设置轮询只能通过messages.get和messages.list中的消息id)来获取比那个historyId更新的消息。
  • 我也不明白为什么messages.list 不接受sinceHistoryId 参数,为什么要为同一个调用提供一个具有不同排序参数的完整端点?
  • 嗯,我认为从哲学上讲,/list 可以列出实际存在的消息。而/history 可以为您提供已删除的消息以及在消息上添加/删除的标签。
  • 但是您仍然应该能够通过使用传递给 /list 的参数或参数来订购实际存在的那些
猜你喜欢
  • 2014-10-18
  • 2015-03-04
  • 2020-07-21
  • 2019-12-18
  • 2016-07-08
  • 2017-09-24
  • 2014-08-25
  • 2021-08-18
  • 1970-01-01
相关资源
最近更新 更多