]> code.delx.au - offlineimap/blobdiff - offlineimap/folder/IMAP.py
Added code to limit command line length for very large mailboxes
[offlineimap] / offlineimap / folder / IMAP.py
index f1d6d50ba905f826bdc96f50e73418f6e81b3413..93f83f4a449aa3919357b68bcbdfb9bbd9bc0441 100644 (file)
@@ -150,7 +150,7 @@ class IMAPFolder(BaseFolder):
 
     def savemessage_searchforheader(self, imapobj, headername, headervalue):
         if imapobj.untagged_responses.has_key('APPENDUID'):
-            return long(imapobj.untagged_responses['APPENDUID'][0].split(' ')[1])
+            return long(imapobj.untagged_responses['APPENDUID'][-1].split(' ')[1])
 
         ui = UIBase.getglobalui()
         ui.debug('imap', 'savemessage_searchforheader called for %s: %s' % \
@@ -282,6 +282,12 @@ class IMAPFolder(BaseFolder):
         self.processmessagesflags('-', uidlist, flags)
 
     def processmessagesflags(self, operation, uidlist, flags):
+        if len(uidlist) > 101:
+            # Hack for those IMAP ervers with a limited line length
+            self.processmessagesflags(operation, uidlist[:100], flags)
+            self.processmessagesflags(operation, uidlist[100:], flags)
+            return
+        
         imapobj = self.imapserver.acquireconnection()
         try:
             try: