Modif watchdog relevé uniquement par mail
This commit is contained in:
45
app/utils_mail.py
Normal file
45
app/utils_mail.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# /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_LOGIN") # ex: services@domo91.fr
|
||||
SMTP_PASSWORD = os.getenv("SMTP_PASSWORD") # 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
|
||||
Reference in New Issue
Block a user