Gmail API缺失邮件消息

4
我在使用Gmail API PHP库检索所有邮件时遇到了麻烦。我使用 listUsersThreads 检索所有线程,以在用户帐户上执行完整或部分邮箱同步。初始完整同步处理并返回我需要的邮件ID,然后我使用它们来存储邮件元数据头(发件人,收件人,日期,主题)。从已存储的数据中,我显示两个参与者之间按日期排序的完整消息对话记录。点击邮件将查询API以检索邮件正文,然后再显示出来。
问题在于,基于我保存的信息,查看MIME内容,MIME正文中存在一些我在数据库中没有的信息。我还尝试使用搜索查询来查询API,但仍有缺失的邮件没有被API返回。
以前的开发人员使用mimecast获取邮件,查询该��据库实际上返回了我丢失的邮件。
为什么Google Gmail API没有提供我和发送者/接收者之间的所有邮件呢? MIME正文清楚地显示了API未返回的邮件,我不明白为什么,也不知道如何找到丢失的邮件。
感谢您提供任何帮助。
1个回答

1

如果这个问题出现在其他人身上,我认为它与过期的历史记录有关。当然,只有在我的实现运行超过两周后才能证明我的想法是否正确。

如果您考虑运行邮箱同步,那么您很可能会错过一些消息,特别是那些从除了收件箱或Gmail之外的客户端发送的消息。平均而言,历史记录保留两周时间,因此通过同步邮箱,您将同步自账户激活以来的所有内容,但已过期的历史记录将无法访问。

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

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

这种方法的缺点是,即使您拥有所有通信的跟踪消息 ID,查找已过期的消息以检索电子邮件正文时,将会返回 404 状态代码,并且您将无法检索某些消息的电子邮件正文内容。因此,如果您的流程在电子邮件正文中有很重要的依赖关系,您应该在部分同步期间也将正文内容存储在本地。我只需要 MIME 标头,尽管在需要时我会查找消息内容,但如果无法检索给定消息的正文,这不会给我带来重大问题。我应该能够在一个月内确认这个理论,所以如果您认为我的理论是错误的,请随时告诉我 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接