簡體   English   中英

Gmail IMAP有時會返回錯誤的抓取結果

[英]Gmail IMAP is sometimes returning bad results for fetch

我正在使用python通過IMAP連接到gmail。

當我對一堆uid進行讀取時,結果有時會包含一些奇怪的結果。

這個bug出現間歇性,並在上周左右開始出現。

例如,我做一個像:

>>>import imaplib
>>>conn = imaplib.IMAP4_SSL('imap.gmail.com')
>>># authenticate etc
>>>conn.uid('fetch', '12,13', '(X-GM-THRID)')

我有時會得到如下結果:

>>>['1 (X-GM-THRID 123123123123 UID 12)', 
    '2 (X-GM-THRID 123123123123 UID 13)', 
    '365022 (UID 601722 FLAGS (\\Seen))']

(為了便於閱讀,添加了換行符,ID從原來改變了,通常我得到的遠不止兩個。)

這很奇怪。 我沒有要求任何關於額外消息的內容。 有時它在那里,有時不在。 無論我獲取什么字段,額外的結果(我只見過一兩個)都不會包含它們,並且只包含FLAGS信息。

任何想法為什么會這樣?

以下內容本周早些時候發布在IMAP協議郵件列表中:

“截至昨天[10月7日星期一],Gmail現在支持報告標志更改,我們會報告新的/已刪除的消息(即協議允許的大多數地方,但肯定是在IDLE期間)。它僅對gmail.com用戶啟用目前,Google Apps用戶將在一周左右的時間內關注,假設我們沒有發現任何問題。“

但是,新功能顯然存在問題,因為今天他們說它正在回滾:

“我們看到一些關於程序不期望獲得額外FETCH響應的報告,我們在周一推出了。我們很快就回滾了,因為一個非常受歡迎的客戶的舊版本存在問題(盡管我們不知道這部分事情)。”

-Rick

Gmail正在向您發送未經請求的FLAGS更新(因為有人遠程更改了郵件)。 這些不是對您的請求的響應,但IMAP允許服務器隨時向您發送任何*信息。 許多服務器會為IDLENOOP響應保存這些未經請求的響應,但顯然Gmail不希望等待。

然而,直到最近(顯然?)Gmail根本沒有發送標志更新,只有EXPUNGEs。

*:在避免競爭條件時,有一些關於可以發送響應的規則,但這不是其中之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM