5d60d33db1
Volledige Foodlinkk Command Center uitbreiding met social automatisering, reclamefolder filters, Proxmox monitoring en documentatie.
47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""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(),
|
|
}
|