test(projekt-matching): gate 1 e2e passed (consider path via e-mail)

This commit is contained in:
tlg
2026-07-09 16:24:34 +02:00
parent a36ea14b84
commit 9b51272413

View File

@@ -0,0 +1,49 @@
#!/usr/bin/env python3
"""Re-send an original example mail (found by subject) as a fresh test mail
from chancen@ to chancen@. Fallback: synthetic single-project mail."""
import os
import smtplib
import ssl
import sys
import time
from email.message import EmailMessage
from email.policy import default as default_policy
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", ".."))
from projektmatch import mailer, mailparse # noqa: E402
USER = "chancen@destengs.com"
PW = os.environ["PM_IMAP_PASSWORD"]
SUBJECT = sys.argv[1] # e.g. "Example 1 for Langflow process"
FALLBACK_URL = sys.argv[2] if len(sys.argv) > 2 else ""
box = mailer.MailBox(USER, PW)
html = ""
for folder in ("INBOX", box.trash_folder()):
box.conn.select(folder)
typ, data = box.conn.uid("SEARCH", None,
f'SUBJECT "{SUBJECT}"')
uids = data[0].split() if data and data[0] else []
if uids:
msg = box.fetch(uids[-1].decode())
html, _ = mailparse.bodies(msg)
break
box.close()
out = EmailMessage(policy=default_policy)
out["From"], out["To"] = USER, USER
out["Subject"] = f"Test {SUBJECT} {int(time.time())}"
if html:
out.set_content("siehe HTML")
out.add_alternative(html, subtype="html")
print(f"re-sending original '{SUBJECT}' body")
else:
if not FALLBACK_URL:
sys.exit(f"original mail '{SUBJECT}' not found and no fallback URL")
out.set_content(f"Neues Projekt:\n\nTestprojekt\n{FALLBACK_URL}\n")
print("original not found -> synthetic fallback mail")
with smtplib.SMTP(mailer.SMTP_HOST, mailer.SMTP_PORT, timeout=30) as server:
server.starttls(context=ssl.create_default_context())
server.login(USER, PW)
server.send_message(out)
print(f"sent: {out['Subject']}")