Files
foodlinkk-command-center/tools-api/app/email_config.py
T

47 lines
1.6 KiB
Python
Raw Normal View History

"""Load active email account from PostgreSQL for tools-api."""
from __future__ import annotations
import os
from typing import Any
from app.db import fetch_one
def get_active_email_config() -> dict[str, Any]:
"""Return SMTP config: DB active account first, then env fallback."""
try:
row = fetch_one(
"""
SELECT id, label, email_address, provider, smtp_host, smtp_port,
smtp_user, smtp_password, imap_host, imap_port, imap_user, imap_password
FROM email_accounts WHERE is_active = TRUE
ORDER BY updated_at DESC LIMIT 1
"""
)
if row and row.get("smtp_host"):
return {
"source": "database",
"account_id": row.get("id"),
"label": row.get("label"),
"smtp_host": (row.get("smtp_host") or "").strip(),
"smtp_port": int(row.get("smtp_port") or 587),
"smtp_user": (row.get("smtp_user") or row.get("email_address") or "").strip(),
"smtp_pass": row.get("smtp_password") or "",
"smtp_from": (row.get("email_address") or row.get("smtp_user") or "").strip(),
}
except Exception:
pass
smtp_user = os.getenv("SMTP_USER", "").strip()
return {
"source": "env",
"account_id": None,
"label": "Environment",
"smtp_host": os.getenv("SMTP_HOST", "").strip(),
"smtp_port": int(os.getenv("SMTP_PORT", "587")),
"smtp_user": smtp_user,
"smtp_pass": os.getenv("SMTP_PASS", "").strip(),
"smtp_from": os.getenv("SMTP_FROM", smtp_user).strip(),
}