Extract shared mail routing and IMAP folder helpers
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.
This commit is contained in:
+4
-19
@@ -13,23 +13,13 @@ import re
|
||||
import sys
|
||||
import getpass
|
||||
from pathlib import Path
|
||||
from imap_utils import list_folders, quote_mailbox
|
||||
|
||||
IMAP_HOST = "australius.nl"
|
||||
IMAP_PORT = 993
|
||||
LOCAL_DIR = Path(__file__).parent / "mailbox"
|
||||
|
||||
|
||||
def parse_folder_name(line: bytes) -> str | None:
|
||||
"""Haal mapnaam op uit IMAP LIST-response."""
|
||||
decoded = line.decode("utf-8", errors="replace")
|
||||
# Formaat: (\Flags) "delimiter" "naam" of (\Flags) "delimiter" naam
|
||||
match = re.match(r'\(.*?\)\s+".*?"\s+(.*)', decoded)
|
||||
if not match:
|
||||
return None
|
||||
name = match.group(1).strip().strip('"')
|
||||
return name if name else None
|
||||
|
||||
|
||||
def safe_path(name: str) -> str:
|
||||
"""Zet mapnaam om naar een veilige directorynaam."""
|
||||
return re.sub(r'[<>:"/\\|?*\x00-\x1f]', "_", name)
|
||||
@@ -49,15 +39,11 @@ def download():
|
||||
|
||||
print("Ingelogd.\n")
|
||||
|
||||
# Alle mappen ophalen
|
||||
status, raw_folders = mail.list()
|
||||
if status != "OK":
|
||||
folders = list_folders(mail)
|
||||
if not folders:
|
||||
print("Kan mappenlijst niet ophalen.")
|
||||
sys.exit(1)
|
||||
|
||||
folders = [parse_folder_name(f) for f in raw_folders if f]
|
||||
folders = [f for f in folders if f]
|
||||
|
||||
print(f"Gevonden mappen ({len(folders)}):")
|
||||
for f in folders:
|
||||
print(f" {f}")
|
||||
@@ -69,8 +55,7 @@ def download():
|
||||
for folder_idx, folder in enumerate(folders, 1):
|
||||
folder_prefix = f"[map {folder_idx}/{num_folders}] {folder}"
|
||||
|
||||
quoted = f'"{folder}"'
|
||||
status, data = mail.select(quoted, readonly=True)
|
||||
status, data = mail.select(quote_mailbox(folder), readonly=True)
|
||||
if status != "OK":
|
||||
print(f"{folder_prefix}: kan niet openen – overgeslagen.")
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user