Don't cache empty IMAP folders
If a folder is empty, most servers will return EXISTS 0 and imaplib2 passes back ['0'] as return value to a select(). It returns [None] if no EXISTS response was given by the server at all. Attempting to fetch the UIDs of 0 emails which leads to various error messages (One server responds with "NO No matching messages", Gmail seems to say "BAD Bad message sequence 1:*" for some (although it is working fine for me with Gmail, so it might behave different for different people). In case we get an None or 0 back, we simply stop caching messages as the folder is empty. This should fix the various error reports that have popped up. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de> Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
parent
67863017e2
commit
26721c60d4
@ -120,7 +120,9 @@ class IMAPFolder(BaseFolder):
|
|||||||
imapobj = self.imapserver.acquireconnection()
|
imapobj = self.imapserver.acquireconnection()
|
||||||
try:
|
try:
|
||||||
res_type, imapdata = imapobj.select(self.getfullname(), True)
|
res_type, imapdata = imapobj.select(self.getfullname(), True)
|
||||||
|
if imapdata == [None] or imapdata[0] == '0':
|
||||||
|
# Empty folder, no need to populate message list
|
||||||
|
return
|
||||||
# By default examine all UIDs in this folder
|
# By default examine all UIDs in this folder
|
||||||
msgsToFetch = '1:*'
|
msgsToFetch = '1:*'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user