45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
import os
|
|
import smtplib
|
|
import logging
|
|
from email.mime.text import MIMEText
|
|
from dotenv import load_dotenv
|
|
|
|
# Charge le .env (et override pour éviter des variables vides héritées de cron/supervisor)
|
|
load_dotenv('/home/debian/Gestion_sondes/.env', override=True)
|
|
|
|
SMTP_HOST = os.getenv("SMTP_HOST")
|
|
SMTP_PORT = int(os.getenv("SMTP_PORT", "465"))
|
|
|
|
SMTP_LOGIN = os.getenv("SMTP_USER") # <-- correspond à ton .env
|
|
SMTP_PASSWORD = os.getenv("SMTP_PASS") # <-- correspond à ton .env
|
|
|
|
MAIL_FROM = os.getenv("MAIL_FROM")
|
|
MAIL_TO = os.getenv("MAIL_TO")
|
|
|
|
def envoyer_mail(sujet: str, contenu: str, destinataires=None) -> None:
|
|
if destinataires is None:
|
|
if not MAIL_TO:
|
|
raise ValueError("MAIL_TO manquant dans le .env")
|
|
destinataires = [a.strip() for a in MAIL_TO.split(",") if a.strip()]
|
|
elif isinstance(destinataires, str):
|
|
destinataires = [destinataires]
|
|
|
|
if not SMTP_HOST:
|
|
raise ValueError("SMTP_HOST manquant dans le .env")
|
|
if not SMTP_LOGIN or not SMTP_PASSWORD:
|
|
raise ValueError("SMTP_USER / SMTP_PASS manquants dans le .env")
|
|
if not MAIL_FROM:
|
|
raise ValueError("MAIL_FROM manquant dans le .env")
|
|
|
|
msg = MIMEText(contenu)
|
|
msg["Subject"] = sujet
|
|
msg["From"] = MAIL_FROM
|
|
msg["To"] = ", ".join(destinataires)
|
|
|
|
# SSL direct (OVH ssl0.ovh.net:465)
|
|
with smtplib.SMTP_SSL(SMTP_HOST, SMTP_PORT, timeout=30) as server:
|
|
server.login(SMTP_LOGIN, SMTP_PASSWORD)
|
|
server.sendmail(MAIL_FROM, destinataires, msg.as_string())
|
|
|
|
logging.info("📧 Mail envoyé: %s -> %s", sujet, destinataires)
|