def collect_mailinfos(server, folder_contents, outpath_format):
#construct progressbar
progressbar_widgets = [
'[Choosing mails for download ] ',
progressbar.Percentage(),
progressbar.Bar(marker=progressbar.RotatingMarker()), ' ', progressbar.ETA()]
total_count = 0
for folder, mailids in folder_contents.items():
total_count += len(mailids)
progressbar_instance = progressbar.ProgressBar(widgets=progressbar_widgets, maxval=total_count).start()
#collect all mailinfos
mailinfos = {}
mailinfo_count = 0
for folder, mailids in folder_contents.items():
mailinfos[folder] = []
#get mailinfo bit by bit
server.select_folder(folder, readonly=True)
for mailid in mailids:
#fetch mail information
mailinfo = server.fetch([mailid], ['ENVELOPE', 'INTERNALDATE', 'RFC822.SIZE'])[mailid]
mailsize = bitmath.Byte(mailinfo[b'RFC822.SIZE'])
mailfilename = construct_mailfilename(outpath_format, mailinfo, args.outdir, folder, mailid)
#only add if mailfilename can be constructed
if mailfilename:
mailinfos[folder].append((mailid, mailfilename, mailsize))
mailinfo_count += 1
progressbar_instance.update(mailinfo_count)
progressbar_instance.finish()
return mailinfos
评论列表
文章目录