from imap_tools import MailBox, AND import re whitelist = { '@auto-greiner.de': [ '@opel-greiner.de' ], '@autohaus-berkemeier.de': [ '@auto-berkemeier.de' ], '@mvcmotors.at': [ '@mvcautomotive.com' ] } def main(): mb = MailBox('mail.global-cube.com').login('archiv', 'Gc01am64!') messages = mb.fetch(criteria=AND(from_="@global-cube.com"), mark_seen=True, bulk=True) # print(mb.folder.list()) # for folder in mb.folder.list(): # if '|' in folder.name: # print(folder) # new_name = folder.name.replace('|', '.') # .replace('@', '').replace('.', '_') # mb.folder.rename(folder.name, new_name) for msg in messages: match = re.findall(r'\+(.*)@', msg.from_) if not match: print(msg.from_, msg.to, msg.subject) else: domain = '@' + match[0] subfolder = 'Archive.' + domain.replace('@', '').replace('.', '_') if not mb.folder.exists(subfolder): mb.folder.create(subfolder) mb.move(msg.uid, subfolder) for to in msg.to: if domain not in to and '@global-cube.de' not in to and msg.from_ != to: if domain in whitelist: valid_domain = [entry in to for entry in whitelist[domain]] if any(valid_domain): break print(domain, to, msg.subject) # print(msg.text) # print([att.filename for att in msg.attachments if att.filename.endswith('.pdf')]) if __name__ == '__main__': main()