def test_fetch_threads(self): self.imap_account = imaplib.IMAP4_SSL() assert list(search.fetch_threads(self.imap_account)) == [[[1], [2]], [3, 4]] threads = search.fetch_threads( self.imap_account, search_criterion=['BODY "CONTENT"'], ) assert list(threads) == [[[1], [2]], [3, 4]]
def list_dir(directory=None): '''List mail in specified folder.''' reset_buffer('vimap-list') b = vim.current.buffer b[:] = None if directory is not None and current_dir != directory: ret = change_mailbox(directory) if ret is None: return None ensure_connection() threads = search.fetch_threads(imap_account, limit=display_conf['limit']) mail_tree = search.threads_to_mail_tree(threads) for output in search.display_mail_tree( imap_account, mail_tree, format_thread=display_conf['format_thread']): for line in output.split('\n'): b.append(line) b[0] = u'Mails from {}:'.format(current_dir) for key, action in list_mappings: vim.command("nnoremap <silent> <buffer> {} {}".format(key, action)) vim.command("normal G")
def main(): args = docopt.docopt('\n'.join(__doc__.split('\n')[2:]), version=const.VERSION) logging.basicConfig( level=logging.DEBUG if args['--verbose'] else logging.INFO, stream=sys.stdout, ) connect_conf = config.new_context_from_file(args['--config-file'], section='imap') if connect_conf is None: return 1 display_conf = config.new_context_from_file(args['--config-file'], section='display') if args['--format'] is not None: config_key = 'format_thread' if args['--thread'] else 'format_list' display_conf[config_key] = args['--format'] if args['--limit'] is not None: try: limit = int(args['--limit']) if limit < 1: raise ValueError except ValueError: log.error('Invalid argument limit : {}'.format(args['--limit'])) return 1 else: limit = None try: imap_account = imap_cli.connect(**connect_conf) imap_cli.change_dir( imap_account, directory=args['<directory>'] or const.DEFAULT_DIRECTORY) if args['--thread'] is False: for mail_info in search.fetch_mails_info(imap_account, limit=limit): sys.stdout.write( display_conf['format_list'].format(**mail_info)) sys.stdout.write('\n') else: threads = search.fetch_threads(imap_account, limit=limit) mail_tree = search.threads_to_mail_tree(threads) for output in search.display_mail_tree( imap_account, mail_tree, format_thread=display_conf['format_thread']): sys.stdout.write(output) sys.stdout.write('\n') imap_cli.disconnect(imap_account) except KeyboardInterrupt: log.info('Interrupt by user, exiting') return 0
def main(): args = docopt.docopt('\n'.join(__doc__.split('\n')[2:]), version=const.VERSION) logging.basicConfig( level=logging.DEBUG if args['--verbose'] else logging.INFO, stream=sys.stdout, ) connect_conf = config.new_context_from_file(args['--config-file'], section='imap') if connect_conf is None: return 1 display_conf = config.new_context_from_file(args['--config-file'], section='display') if args['--format'] is not None: config_key = 'format_thread' if args['--thread'] else 'format_list' display_conf[config_key] = args['--format'] if args['--limit'] is not None: try: limit = int(args['--limit']) if limit < 1: raise ValueError except ValueError: log.error('Invalid argument limit : {}'.format(args['--limit'])) return 1 else: limit = None try: imap_account = imap_cli.connect(**connect_conf) imap_cli.change_dir(imap_account, directory=args['<directory>'] or const.DEFAULT_DIRECTORY) if args['--thread'] is False: for mail_info in search.fetch_mails_info(imap_account, limit=limit): sys.stdout.write( display_conf['format_list'].format(**mail_info)) sys.stdout.write('\n') else: threads = search.fetch_threads(imap_account, limit=limit) mail_tree = search.threads_to_mail_tree(threads) for output in search.display_mail_tree( imap_account, mail_tree, format_thread=display_conf['format_thread']): sys.stdout.write(output) sys.stdout.write('\n') imap_cli.disconnect(imap_account) except KeyboardInterrupt: log.info('Interrupt by user, exiting') return 0