【问题标题】:How to get new message detailes via Gmail push notifications?如何通过 Gmail 推送通知获取新邮件详细信息?
【发布时间】:2016-09-28 10:52:11
【问题描述】:

我有 java 服务器应用程序。而且我需要监控很多 gmail 帐户,以便能够向移动设备发送有关新收件箱消息的推送通知。 我需要知道发件人电子邮件和消息主题才能发送推送通知。

我尝试了Gmail push notifications 系统(webhooks 选项) 如果我正确理解了所有内容以便为每个用户获取每条新消息所需的信息,则会出现以下情况:

  • Google 通过 https 请求向我发送电子邮件历史 ID
  • 我打电话给history API 并为用户获取新的消息ID
  • request message info 按消息 ID

这意味着我需要为每个用户的每条新消息添加 2 个额外请求。如果服务器每秒需要处理几条新消息,这看起来很困难。而且我仍然看不到其他方式。

有什么办法可以缩短吗? (例如,让谷歌不仅向我发送历史 ID,而且还需要新的消息详细信息,或者至少提出一个额外的请求,而不是两个)

谢谢!

【问题讨论】:

    标签: email gmail gmail-api


    【解决方案1】:

    我们尝试使用推送通知,但生成的请求量意味着我们改为定时轮询。值得注意的是,对于消息的任何更改,例如标签更改、读取状态更改等,您都会收到推送通知。正如您所说,有很多请求。

    如果您需要实时通知,我不知道如何避免您概述的过程。

    如果您不需要实时,那么您可以定期轮询或至少检查每个帐户的推送通知,如果已收到一些消息,则可以批量检索任何新消息,而不是单个请求。

    【讨论】:

    • 谢谢!我需要实时通知,所以我认为轮询不是我的情况。目前我使用 IMAP IDLE 进行通知,但它很难维护。我需要数千个实时 IMAP 连接,这会占用大量内存并且非常不稳定。
    • 即使有成千上万的用户,新的推送方法也将是一种改进。如果适合您的用例,您还可以按标签过滤推送通知,例如 ["INBOX"] 以减少一些负载。
    • Gmail 生成的推送数量非常惊人。我很惊讶没有办法只订阅收到的电子邮件。
    【解决方案2】:

    我也遇到了同样的问题。 History API 没有给出最近的 messageId。我通过点击设置 Q = 最后 5 分钟时间戳的 THREAD API 解决了这个问题。 Webhook 推送通知有助于通知新邮件已到。在我使用 THREAD API 在最后 10 分钟内收到所有消息之后。

    【讨论】:

    • 实际上,History API 正在为您提供所涉及消息的 messageId。但它不会为您提供消息详细信息。
    猜你喜欢
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多