2017-10-12 73 views
3

我無法通過Gmail API PHP庫檢索所有郵件。我使用listUsersThreads來檢索所有線程,以便在用戶的帳戶上執行全部或部分郵箱同步。最初的完整同步過程並返回我需要的消息標識,然後用它來存儲郵件元標題(從,到,日期,主題)。隨後使用來自上一個歷史ID的listUserHistory的呼叫允許我執行部分同步以僅檢索最新的消息。從我存儲的數據中,我隨後在兩方之間顯示完整的消息對話日誌,按日期排序以顯示對話。點擊郵件然後將查詢API以檢索電子郵件正文,然後顯示。Gmail API缺失郵件

的問題是基於我已保存的消息,看着MIME內容,也有在MIME體的消息,我不會對我的數據庫。然後我也嘗試使用搜索查詢來查詢API,並且仍然存在未被API返回的丟失消息。

先前的開發者使用mimecast獲取消息,查詢該數據庫事實上確實返回我失蹤的消息。

Google Gmail API如何在發件人和收件人之間不給我所有郵件? MIME主體清楚地顯示查詢API時不可用的消息,我不明白爲什麼,或者如何找到丟失的消息。

任何援助將不勝感激。

回答

1

所以,在此情況下,問題出現了任何人,我認爲它有事情做過期歷史項。我堅持糾正,因爲這隻能在我的實施運行超過兩週後才能得到證實。

如果你正在考慮運行郵箱同步,還有,你會被丟失的郵件,特別是如果這些消息是從收件箱比或Gmail以外的其他客戶端發送一個很好的機會。歷史項目平均保存兩週,因此通過同步郵箱,您將同步從帳戶被激活時的所有內容,但過期的歷史記錄將無法使用。

從理論上講,這意味着在執行部分同步,你應該有完整的電子郵件對話。只要像我一樣,通過Google雲服務控制檯啓用了推送通知,以提醒您的系統在任何給定帳戶上運行部分同步過程,則您應該擁有所需的所有MIME標頭。

如果你的部分同步執行手動,或可能通過的cron的間隔,而不是通過推送通知,你需要確保的間隔配置同步,而所有歷史項仍然可用和可訪問。

儘管如此,即使您確實已經跟蹤了所有與其消息ID的通信,但在過期消息中檢索電子郵件正文的查找將失敗,並顯示404狀態碼,您將不會能夠爲某些消息檢索電子郵件正文內容。因此,如果你的進程在很大程度上依賴於電子郵件正文中的內容,你也應該在部分同步期間在本地存儲正文內容。我真的只需要MIME頭,儘管我在需要時查找郵件內容,但它如果我無法檢索任何給定消息的主體,將不會對我造成重大問題。

我應該能夠從現在確認在一個月之內這個理論,所以,如果你認爲我的理論是不正確,請隨時讓我明白。 :)