# /home/debian/Gestion_sondes/utils_mail.py import os import smtplib import logging from email.mime.text import MIMEText from dotenv import load_dotenv load_dotenv('/home/debian/Gestion_sondes/.env') SMTP_HOST = os.getenv("SMTP_HOST", "smtp.mail.ovh.net") SMTP_PORT = int(os.getenv("SMTP_PORT", "465")) SMTP_LOGIN = os.getenv("SMTP_USER") # ex: services@domo91.fr SMTP_PASSWORD = os.getenv("SMTP_PASS") # mot de passe OVH MAIL_FROM = os.getenv("MAIL_FROM", SMTP_LOGIN) MAIL_TO = os.getenv("MAIL_TO") # ex: services@domo91.fr def envoyer_mail(sujet: str, contenu: str, destinataires=None) -> None: """ Envoi email via OVH SMTP SSL 465 (process identique à supervisor_watchdog.py). destinataires: str unique ou liste; si None => MAIL_TO depuis .env """ 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_LOGIN or not SMTP_PASSWORD: raise ValueError("SMTP_LOGIN / SMTP_PASSWORD manquants dans le .env") msg = MIMEText(contenu) msg["Subject"] = sujet msg["From"] = MAIL_FROM msg["To"] = ", ".join(destinataires) try: with smtplib.SMTP_SSL(SMTP_HOST, SMTP_PORT) as server: server.login(SMTP_LOGIN, SMTP_PASSWORD) server.sendmail(MAIL_FROM, destinataires, msg.as_string()) logging.info("📧 Mail envoyé: %s -> %s", sujet, destinataires) except Exception as e: logging.error("Erreur envoi mail: %s", e) raise