eb53bc123a
Prompt since previous commit: execute step 1 Centralized route targets, source-folder policy, and modified UTF-7 mailbox quoting. Verification: py_compile, route/folder consistency, and git diff --check passed.
60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Maak alle nieuwe IMAP-mappen aan op australius.nl.
|
|
Bestaande mappen worden overgeslagen.
|
|
Gebruik: python3 maak_mappen.py
|
|
"""
|
|
|
|
import sys
|
|
import imaplib
|
|
import config
|
|
from imap_utils import list_folders, quote_mailbox
|
|
from mail_routes import PREFIX, destination_folders
|
|
|
|
def mappen() -> list[str]:
|
|
"""Alle te maken mappen, zonder prefix (prefix wordt automatisch toegevoegd)."""
|
|
return destination_folders()
|
|
|
|
|
|
def run():
|
|
cfg = config.load()
|
|
print(f"Account: {cfg.username}\n")
|
|
|
|
print(f"Verbinden met {cfg.imap_host}:{cfg.imap_port} ...")
|
|
try:
|
|
mail = imaplib.IMAP4_SSL(cfg.imap_host, cfg.imap_port)
|
|
mail.login(cfg.username, cfg.password)
|
|
except Exception as e:
|
|
print(f"Verbinding mislukt: {e}")
|
|
sys.exit(1)
|
|
|
|
existing = set(list_folders(mail))
|
|
|
|
te_maken = mappen()
|
|
print(f"\n{len(te_maken)} mappen te controleren ({len(existing)} bestaan al op server)\n")
|
|
|
|
aangemaakt = 0
|
|
overgeslagen = 0
|
|
fouten = 0
|
|
|
|
for folder in te_maken:
|
|
volledige_naam = PREFIX + folder
|
|
if volledige_naam in existing or folder in existing:
|
|
print(f" ✓ bestaat {folder}")
|
|
overgeslagen += 1
|
|
continue
|
|
status, data = mail.create(quote_mailbox(volledige_naam))
|
|
if status == "OK":
|
|
print(f" + aangemaakt {folder}")
|
|
aangemaakt += 1
|
|
else:
|
|
print(f" ✗ FOUT {folder}: {data}")
|
|
fouten += 1
|
|
|
|
mail.logout()
|
|
print(f"\nKlaar: {aangemaakt} aangemaakt, {overgeslagen} bestonden al, {fouten} fouten.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
run()
|