átlagos kiegészítséek jó sok
This commit is contained in:
@@ -81,6 +81,37 @@ class EmailManager:
|
||||
smtp_cfg = await config.get_setting(db, "smtp_config", default={
|
||||
"host": "localhost", "port": 587, "user": "", "pass": "", "tls": True
|
||||
})
|
||||
logger.info(f"SMTP config retrieved: {smtp_cfg}")
|
||||
# Ha a default értéket kaptuk, próbáljuk a környezeti változókból felépíteni a konfigurációt
|
||||
import os
|
||||
env_host = os.getenv("SMTP_HOST")
|
||||
env_port = os.getenv("SMTP_PORT")
|
||||
env_user = os.getenv("SMTP_USER")
|
||||
env_pass = os.getenv("SMTP_PASSWORD")
|
||||
env_tls = os.getenv("SMTP_TLS", "False").lower() in ("true", "1", "yes")
|
||||
env_ssl = os.getenv("SMTP_SSL", "False").lower() in ("true", "1", "yes")
|
||||
logger.info(f"Env SMTP: host={env_host}, port={env_port}, tls={env_tls}, ssl={env_ssl}")
|
||||
# Felülírjuk a konfigurációt a környezeti változókkal, ha vannak
|
||||
if env_host:
|
||||
smtp_cfg["host"] = env_host
|
||||
if env_port:
|
||||
try:
|
||||
smtp_cfg["port"] = int(env_port)
|
||||
except:
|
||||
pass
|
||||
if env_user:
|
||||
smtp_cfg["user"] = env_user
|
||||
if env_pass:
|
||||
smtp_cfg["pass"] = env_pass
|
||||
# TLS/SSL kezelése: ha SSL igaz, akkor TLS legyen False (mert külön SMTP_SSL kapcsolat kell)
|
||||
# Egyszerűsítés: tls = not ssl (de a Mailpit esetén TLS=False, SSL=False)
|
||||
smtp_cfg["tls"] = env_tls
|
||||
# SSL esetén a port változhat, de a kódunk nem támogatja az SMTP_SSL-t, csak TLS-t.
|
||||
# A Mailpit nem igényel TLS-t, így maradjon False.
|
||||
if env_ssl:
|
||||
smtp_cfg["tls"] = False
|
||||
# Megjegyzés: SSL kapcsolathoz smtplib.SMTP_SSL kellene, de most nem implementáljuk.
|
||||
logger.info(f"Final SMTP config: {smtp_cfg}")
|
||||
return await EmailManager._send_via_smtp(smtp_cfg, from_email, from_name, recipient, subject, html)
|
||||
|
||||
finally:
|
||||
@@ -119,8 +150,12 @@ class EmailManager:
|
||||
with smtplib.SMTP(cfg["host"], cfg["port"], timeout=15) as server:
|
||||
if cfg.get("tls", True):
|
||||
server.starttls()
|
||||
if cfg.get("user") and cfg.get("pass"):
|
||||
server.login(cfg["user"], cfg["pass"])
|
||||
# Mailpit nem támogatja az SMTP AUTH-ot, és ha üres string a user/pass, akkor se próbáljuk meg
|
||||
user = cfg.get("user", "")
|
||||
passwd = cfg.get("pass", "")
|
||||
# Ha a user/pass nem üres és nem csak idézőjelek, akkor login
|
||||
if user and passwd and user.strip() not in ('', '""') and passwd.strip() not in ('', '""'):
|
||||
server.login(user, passwd)
|
||||
server.send_message(msg)
|
||||
|
||||
logger.info(f"SMTP siker -> {recipient}")
|
||||
|
||||
Reference in New Issue
Block a user