imaplib use exception to report errors, but some problems must be detected by checking the return value ! For example, when trying to append into a mailbox with wrong ACL, imaplib return 'NO', but dont raise any exception (I give a sample at the end). This make error handling more complicate, because any imap statement is supposed to be followed by a test of the returned value!
Why not report all problems using exceptions ? It easy to modify imaplib.py to manage this because most of the imap call are made through function _simple_command this way : def _simple_command(self, name, *args): return self._command_complete(name, self._command(name, *args)) I propose to replace it by something like : def _simple_command(self, name, *args): typ, dat=self._command_complete(name, self._command(name, *args)) if typ!='OK': raise self.error(dat[-1]) return typ, dat Any comment ? Here is an example, append on a mailbox with the wrong ACL fail by returning a 'NO' import imaplib server='localhost' login='[EMAIL PROTECTED]' passwd='password' c=imaplib.IMAP4(server) c.login(login, passwd) c.setacl('INBOX', login, '') # set wrong ACL, removing 'i' typ, dat=c.append('INBOX', None, None, "From: [EMAIL PROTECTED]: %s \nSubject: test append\n\nHello\n" % (login)) print typ, dat output: NO ['Permission denied'] -- http://mail.python.org/mailman/listinfo/python-list