【问题标题】:How to check for incoming new messages using Gmail API如何使用 Gmail API 检查收到的新邮件
【发布时间】:2016-02-01 17:10:48
【问题描述】:

我已经设置了一个可以从 Gmail 帐户中提取数据的 python 脚本,但我想将其设置为自上次调用 API 以来它只会提取新消息(我将 ping服务器定期)。

我查看了推送通知和 Pub/Sub,但我不太确定这些是否相关,或者我应该查看其他内容。 Gmail 也有 Users.history: list 功能,但我想知道这是否可以以任何有用的方式使用。

【问题讨论】:

  • Gmail API 推送通知是您应该采用的方法。每当有新电子邮件到达时,Gmail 都会 ping 您的服务器。

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


【解决方案1】:

您可以像往常一样list messages,但说您想要某个时间戳之后的消息。这样,您可以轮询新消息,例如每分钟,给出您最后一次检查seconds since the epoch 中的消息的时间:

请求

q = is:unread AND after:<time_since_epoch_in_seconds>

GET https://www.googleapis.com/gmail/v1/users/me/messages?q=is%3Aunread+AND+after%3A1446461721&access_token={YOUR_API_KEY}

回应

{
 "messages": [
  {
   "id": "150c7d689ef7cdf7",
   "threadId": "150c7d689ef7cdf7"
  }
 ],
 "resultSizeEstimate": 1
}

那么你就保存发出请求时的时间戳,一分钟后使用这个时间戳。

【讨论】:

  • 请注意,如果有其他用户/应用与可以将邮件标记为已读的收件箱交互,则会出现竞争条件问题。
  • @user2857014 Sweet :) 没问题!
  • 我正在使用自纪元以来的秒数,它大部分工作正常,除了它无法识别一些最新消息。对此有什么可能的解释吗? @Tholle 还是其他人?
  • 别在意上面的问题。我从错误的电子邮件地址中提取。
猜你喜欢
  • 2016-07-26
  • 2011-02-01
  • 2014-11-02
  • 2014-10-23
  • 2016-03-24
  • 2021-03-19
  • 1970-01-01
  • 2017-03-21
  • 2021-01-27
相关资源
最近更新 更多