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
-14
@@ -26,6 +26,7 @@ from pathlib import Path
|
||||
from collections import defaultdict
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.text import MIMEText
|
||||
from imap_utils import list_folders, quote_mailbox
|
||||
|
||||
# Mappen die NIET in het overzicht komen (systeem + inbox zelf)
|
||||
UITSLUITINGEN = {
|
||||
@@ -86,14 +87,6 @@ def leesbare_map(imap_naam: str) -> str:
|
||||
return imap_naam.removeprefix("INBOX.").replace(".", " › ")
|
||||
|
||||
|
||||
def parse_folder_name(raw: bytes) -> str | None:
|
||||
decoded = raw.decode("utf-8", errors="replace")
|
||||
m = re.match(r'\(.*?\)\s+".*?"\s+(.*)', decoded)
|
||||
if m:
|
||||
return m.group(1).strip().strip('"')
|
||||
return None
|
||||
|
||||
|
||||
# ── IMAP ophalen ──────────────────────────────────────────────────────────────
|
||||
|
||||
def haal_berichten_op(mail: imaplib.IMAP4_SSL, zoekdatum: date) -> dict[str, list[dict]]:
|
||||
@@ -104,13 +97,10 @@ def haal_berichten_op(mail: imaplib.IMAP4_SSL, zoekdatum: date) -> dict[str, lis
|
||||
since = imap_date(zoekdatum)
|
||||
before = imap_date(zoekdatum + timedelta(days=1))
|
||||
|
||||
status, raw_folders = mail.list()
|
||||
if status != "OK":
|
||||
alle_mappen = list_folders(mail)
|
||||
if not alle_mappen:
|
||||
return {}
|
||||
|
||||
alle_mappen = [parse_folder_name(f) for f in raw_folders if f]
|
||||
alle_mappen = [f for f in alle_mappen if f]
|
||||
|
||||
resultaat: dict[str, list[dict]] = defaultdict(list)
|
||||
|
||||
for folder in sorted(alle_mappen):
|
||||
@@ -119,7 +109,7 @@ def haal_berichten_op(mail: imaplib.IMAP4_SSL, zoekdatum: date) -> dict[str, lis
|
||||
if UITSLUIT_PATRONEN.match(folder):
|
||||
continue
|
||||
|
||||
status, data = mail.select(f'"{folder}"', readonly=True)
|
||||
status, data = mail.select(quote_mailbox(folder), readonly=True)
|
||||
if status != "OK":
|
||||
continue
|
||||
|
||||
|
||||
Reference in New Issue
Block a user