[英]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允許服務器隨時向您發送任何*信息。 許多服務器會為IDLE
或NOOP
響應保存這些未經請求的響應,但顯然Gmail不希望等待。
然而,直到最近(顯然?)Gmail根本沒有發送標志更新,只有EXPUNGEs。
*:在避免競爭條件時,有一些關於可以發送響應的規則,但這不是其中之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.