【问题标题】:Efficient way of syncing Gmail Inbox messages using the new Gmail API?使用新的 Gmail API 同步 Gmail 收件箱邮件的有效方法?
【发布时间】:2014-10-23 15:59:31
【问题描述】:

网络应用程序使用新的 Gmail API(Users.messages:发送)代表 UserAUserB 发送电子邮件em>)。

同步响应包含threadIdmessageId,它们存储在数据库中。

然后我们查询历史 API 以了解用户收件箱中的任何更改(Users.history: list)。

是否有一种有效的方法来获取自上次同步以来的所有更新(新回复、已读/未读更改)?

我们尝试的一种实现是通过自定义标签过滤历史 API 结果。不幸的是,我们注意到,一旦线程/消息被标记为特定标签,任何后续响应都不会自动标记,并且新的回复不会包含在历史 API 响应中。

第二种方法是使用 gmail 高级搜索来查询线程以查找特定标签和日期(例如 after:2014/08/29 label:MY_LABEL)。问题是 gmail 不会返回在 2014/08/29 之前创建但在该日期有回复的线程。

任何可扩展的建议将不胜感激。

【问题讨论】:

    标签: performance optimization gmail gmail-api google-schemas


    【解决方案1】:

    我不确定我是否理解这里,users.history.list 正是为此而制作的。给定一个之前的historyId,然后你可以调用history.list(previousHistoryid),遍历结果以找到自之前的historyId以来更新的所有消息Id。然后在所有这些上调用 messages.get() - 对于您已经知道的任何消息,您可以调用 format=MINIMAL (查看标签更新),对于新消息,您可以使用不同的格式来获取消息内容,如果你需要它。

    【讨论】:

    • 您好,埃里克,感谢您的回答。这正是我们所做的。我们考虑为通过我们的应用程序发送的电子邮件添加自定义标签,然后使用此标签过滤 history.list 结果以最小化处理的响应。显然,这不起作用,因为响应原始线程 ID 的新消息 ID 不会自动标记。
    猜你喜欢
    • 2017-09-02
    • 2014-12-19
    • 2015-04-07
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2011-02-01
    相关资源
    最近更新 更多