【问题标题】:Gmail API Missing MessagesGmail API 丢失邮件
【发布时间】:2018-03-24 17:57:49
【问题描述】:

我无法通过 Gmail API PHP 库检索所有邮件。我使用listUsersThreads 检索所有线程,以对用户帐户进行完全或部分邮箱同步。初始完全同步处理并返回我需要的消息 ID,然后我用它来存储邮件元标题(发件人、收件人、日期、主题)。使用来自最后一个历史 ID 的 listUserHistory 的后续调用允许我进行部分同步以仅检索最新消息。然后,根据我存储的数据,我会显示两方之间的完整消息对话日志,按日期排序以显示对话。然后单击该消息将查询 API 以检索电子邮件正文,然后我将其显示。

问题在于,根据我保存的消息,查看 MIME 内容,MIME 正文中有一些消息,而我的数据库中没有这些消息。然后,我还尝试使用搜索查询查询 API,但仍然缺少 API 未返回的消息。

以前的开发人员使用 mimecast 来获取消息,查询该数据库实际上会返回我丢失的消息。

Google Gmail API 为何无法提供发件人和收件人之间的所有邮件? MIME 正文清楚地显示了查询 API 时不可用的消息,我不明白为什么或如何找到丢失的消息。

我们将不胜感激。

【问题讨论】:

    标签: php api email gmail-api


    【解决方案1】:

    因此,如果其他人遇到此问题,我相信它与过期的历史项目有关。我必须得到纠正,因为只有在我的实施运行两个多星期后才能证明这一点。

    如果您正在考虑运行邮箱同步,则很有可能会丢失邮件,尤其是如果这些邮件是从 Inbox 或 Gmail 以外的客户端发送的。历史项目平均保留两周,因此通过同步邮箱,您将同步帐户激活时的所有内容,但过期的历史项目将不可用。

    理论上,这意味着您应该在执行部分同步的同时进行完整的电子邮件对话。当通信发生时,您应该拥有所需的所有 MIME 标头,前提是您像我一样通过 Google 云服务控制台启用推送通知,以提醒您的系统在任何给定帐户上运行部分同步过程。

    如果您的部分同步是手动执行的,或者可能通过 CRON 间隔执行,而不是通过推送通知,您需要确保间隔配置为同步,同时所有历史记录项仍然可用和可访问。

    不过,这样做的缺点是,即使您确实跟踪了与其邮件 ID 进行的所有通信,在过期邮件上查找以检索电子邮件正文也会失败并显示 404 状态代码,并且您将无法检索某些邮件的电子邮件正文内容。

    因此,如果您的流程严重依赖电子邮件正文中的内容,您还应该在部分同步期间将正文内容存储在本地如果我无法检索任何给定消息的正文,不会对我造成重大问题。

    我应该能在一个月后证实这个理论,所以如果你认为我的理论不正确,请随时让我更聪明。 :)

    【讨论】:

      猜你喜欢
      • 2017-12-19
      • 2016-10-01
      • 2014-08-30
      • 2016-02-25
      • 1970-01-01
      • 2014-08-16
      • 2021-01-27
      • 2018-06-22
      • 2023-01-25
      相关资源
      最近更新 更多