Selects a mailbox on the IMAP server :returns: 'OK' on success, nothing if the folder was already selected or raises an :exc:`OfflineImapError`.
(self, mailbox='INBOX', readonly=False, force=False)
| 40 | return None |
| 41 | |
| 42 | def select(self, mailbox='INBOX', readonly=False, force=False): |
| 43 | """Selects a mailbox on the IMAP server |
| 44 | |
| 45 | :returns: 'OK' on success, nothing if the folder was already |
| 46 | selected or raises an :exc:`OfflineImapError`.""" |
| 47 | |
| 48 | if self.__getselectedfolder() == mailbox and \ |
| 49 | self.is_readonly == readonly and \ |
| 50 | not force: |
| 51 | # No change; return. |
| 52 | return |
| 53 | try: |
| 54 | result = super(UsefulIMAPMixIn, self).select(mailbox, readonly) |
| 55 | except self.readonly as e: |
| 56 | # pass self.readonly to our callers |
| 57 | raise |
| 58 | except self.abort as e: |
| 59 | # self.abort is raised when we are supposed to retry |
| 60 | errstr = "Server '%s' closed connection, error on SELECT '%s'. Ser"\ |
| 61 | "ver said: %s" % (self.host, mailbox, e.args[0]) |
| 62 | severity = OfflineImapError.ERROR.FOLDER_RETRY |
| 63 | six.reraise(OfflineImapError, |
| 64 | OfflineImapError(errstr, severity), |
| 65 | exc_info()[2]) |
| 66 | if result[0] != 'OK': |
| 67 | #in case of error, bail out with OfflineImapError |
| 68 | errstr = "Error SELECTing mailbox '%s', server reply:\n%s" %\ |
| 69 | (mailbox, result) |
| 70 | severity = OfflineImapError.ERROR.FOLDER |
| 71 | raise OfflineImapError(errstr, severity) |
| 72 | return result |
| 73 | |
| 74 | # Overrides private function from IMAP4 (@imaplib2) |
| 75 | def _mesg(self, s, tn=None, secs=None): |
nothing calls this directly
no test coverage detected