Beispiel #1
0
 def imap_status(self, tag, argparser):
     original_name = argparser.parse()
     items = argparser.parse()
     name = utils.normpath(original_name)
     mailmanager = self._account.get_mailmanager()
     if not mailmanager.folder_exists(name):
         return 'NO command failed; folder does not exist'
     results = []
     for item in items:
         results.append(item)
         if item == 'MESSAGES':
             results.append(str(mailmanager.get_count(name)))
         elif item == 'RECENT':
             results.append('0')
         elif item == 'UIDVALIDITY':
             results.append(str(UID_VALIDITY))
         elif item == 'UNSEEN':
             results.append(str(mailmanager.get_count_unread(name)))
         elif item == 'UIDNEXT':
             results.append(str(mailmanager.next_uid_peek(name)))
         else:
             return 'BAD STATUS failed; item %s invalid' % (item)
     self._sock.sendline('* STATUS "%s" (%s)' %
               (utils.imap_escape(original_name), ' '.join(results)))
     return 'OK STATUS completed'
Beispiel #2
0
 def imap_list(self, tag, argparser):
     ref = argparser.parse()
     name = argparser.parse()
     # TODO: worth supporting \Marked and \Umarked attributes?
     if len(name) == 0:
         self._sock.sendline('* LIST (\Noselect) "\\\\" "%s"' %
                   (utils.imap_escape(ref)))
         return 'OK LIST completed'
     fullname = '\\'.join([ref, name]) if ref else name
     matcher = utils.mailbox_matcher(utils.normpath(fullname))
     all_folders = self._account.get_mailmanager().get_folders()
     matched_folders = filter(lambda x: matcher.match(x), all_folders)
     for folder in matched_folders:
         fullname = '\\'.join([ref, folder]) if ref else folder
         name = utils.imap_escape(utils.normpath(fullname))
         self._sock.sendline('* LIST () "\\\\" "%s"' % (name))
     return 'OK LIST completed'
Beispiel #3
0
 def imap_lsub(self, tag, argparser):
     ref = argparser.parse()
     name = argparser.parse()
     fullname = '\\'.join([ref, name]) if ref else name
     matcher = utils.mailbox_matcher(utils.normpath(fullname))
     matched_folders = filter(lambda x: matcher.match(x),
                              self._subscriptions)
     for folder in matched_folders:
         fullname = '\\'.join([ref, folder]) if ref else folder
         path = utils.normpath(fullname)
         flags = []
         escapedpath = utils.imap_escape(path)
         self._sock.sendline('* LSUB (%s) "\\\\" "%s"' %
                   (' '.join(flags), escapedpath))
     return 'OK LSUB completed'