diff --git a/README.rst b/README.rst index 47cb2a8..b4bdccc 100644 --- a/README.rst +++ b/README.rst @@ -147,13 +147,15 @@ The user discussion, development and all exciting stuff take place in the `mailing list`_. You're *NOT* supposed to subscribe to send emails. -Reporting bugs -============== +Reporting bugs and contributions +================================ Bugs ---- -Bugs and issues should be reported to the `mailing list`_. +Bugs, issues and contributions should be reported to the `mailing list`_. +**Please, don't use the github features (messages, pull requests, etc) at all. +It would most likely be discarded or ignored.** ======== diff --git a/offlineimap/folder/IMAP.py b/offlineimap/folder/IMAP.py index e3ce419..76f0c4a 100644 --- a/offlineimap/folder/IMAP.py +++ b/offlineimap/folder/IMAP.py @@ -87,9 +87,13 @@ class IMAPFolder(BaseFolder): # Primes untagged_responses imapobj.select(self.getfullname(), readonly = 1, force = 1) try: - # Some mail servers do not return an EXISTS response if - # the folder is empty. - maxmsgid = long(imapobj.untagged_responses['EXISTS'][0]) + # 1. Some mail servers do not return an EXISTS response + # if the folder is empty. 2. ZIMBRA servers can return + # multiple EXISTS replies in the form 500, 1000, 1500, + # 1623 so check for potentially multiple replies. + maxmsgid = 0 + for msgid in imapobj.untagged_responses['EXISTS']: + maxmsgid = max(long(msgid), maxmsgid) except KeyError: return True @@ -169,10 +173,13 @@ class IMAPFolder(BaseFolder): return else: try: - # Some mail servers do not return an EXISTS response if - # the folder is empty. - - maxmsgid = long(imapobj.untagged_responses['EXISTS'][0]) + # 1. Some mail servers do not return an EXISTS response + # if the folder is empty. 2. ZIMBRA servers can return + # multiple EXISTS replies in the form 500, 1000, 1500, + # 1623 so check for potentially multiple replies. + maxmsgid = 0 + for msgid in imapobj.untagged_responses['EXISTS']: + maxmsgid = max(long(msgid), maxmsgid) messagesToFetch = '1:%d' % maxmsgid; except KeyError: return