Catch 'BAD' replies on append()ing a message

append() raises an Exception, in case the IMAP server replies with 'BAD'
(but not when it responds with 'NO') but we were not catching that. Do
catch the situation and also raise an OfflineImapError at MESSAGE
severity, so that we can continue with the next message.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
Sebastian Spaeth 2011-08-15 10:18:37 +02:00 committed by Nicolas Sebrecht
parent e6dee14a84
commit 194aa1db3c

View File

@ -454,9 +454,14 @@ class IMAPFolder(BaseFolder):
(date, dbg_output)) (date, dbg_output))
#Do the APPEND #Do the APPEND
(typ, dat) = imapobj.append(self.getfullname(), try:
(typ, dat) = imapobj.append(self.getfullname(),
imaputil.flagsmaildir2imap(flags), imaputil.flagsmaildir2imap(flags),
date, content) date, content)
except Exception, e:
# If the server responds with 'BAD', append() raise()s directly.
# So we need to prepare a response ourselves.
typ, dat = 'BAD', str(e)
if typ != 'OK': #APPEND failed if typ != 'OK': #APPEND failed
raise OfflineImapError("Saving msg in folder '%s', repository " raise OfflineImapError("Saving msg in folder '%s', repository "
"'%s' failed. Server reponded; %s %s\nMessage content was:" "'%s' failed. Server reponded; %s %s\nMessage content was:"