Patch for multi-response imap SELECT
    Lars Thalmann 
    web at larsthalmann.com
       
    Tue Jun  8 19:10:31 BST 2010
    
    
  
Hi,
It seems some servers (Zimbra?) respond to imap SELECT requests with
multiple EXISTS lines:
? SELECT INBOX
* 500 EXISTS
* 0 RECENT
* 1000 EXISTS
* 0 RECENT
* 1500 EXISTS
* 0 RECENT
* 1567 EXISTS
* 0 RECENT
This is a rough patch to fix offlineimap so that it handles this:
--- /usr/share/pyshared/offlineimap/folder/IMAP.py.old  2010-06-08 19:04:32.650092826 +0200
+++ /usr/share/pyshared/offlineimap/folder/IMAP.py      2010-06-08 19:53:36.030161637 +0200
@@ -126,7 +126,13 @@
             try:
                 # Some mail servers do not return an EXISTS response if
                 # the folder is empty.
-                maxmsgid = long(imapobj.untagged_responses['EXISTS'][0])
+                maxmsgid = 0
+                i = 0
+                l = len(imapobj.untagged_responses['EXISTS'])
+                while (i < l):
+                    r = long(imapobj.untagged_responses['EXISTS'][i])
+                    maxmsgid = max(r, maxmsgid)
+                    i += 1
             except KeyError:
                 return
             if maxmsgid < 1:
Would be great with feedback on whether you think this is the right
solution or not.
Best wishes,
Lars
-- 
Lars Thalmann, www.larsthalmann.com
    
    
More information about the OfflineIMAP-project
mailing list