Files
aethas-free/modules/debug_mailer.py
T
2026-08-18 16:04:58 +02:00

64 lines
2.4 KiB
Python

import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from modules.logger import log_event
# Option de désactivation depuis l'interface (Phase Debug)
DEBUG_MAIL_ACTIVE = True
def envoyer_alerte_debug(niveau, source, message_erreur):
"""
Envoie un e-mail à l'administrateur en cas d'erreur serveur (Phase Debug).
Utilise le serveur SMTP défini dans le .env
"""
if not DEBUG_MAIL_ACTIVE:
return
# L'adresse de l'administrateur est configurée via l'interface (ou le .env)
email_admin = os.getenv("ADMIN_EMAIL", "votre-email@domaine.com")
smtp_serveur = os.getenv("SMTP_SERVER")
smtp_port = int(os.getenv("SMTP_PORT", 587))
smtp_user = os.getenv("SMTP_USER")
smtp_pass = os.getenv("SMTP_PASS")
if not all([smtp_serveur, smtp_user, smtp_pass]):
log_event("WARNING", "DEBUG_MAILER", "Configuration SMTP absente. Impossible d'envoyer l'alerte.")
return
sujet = f"[ALERTE {niveau}] Aethas38_Multi_IA - Erreur dans {source}"
corps_html = f"""
<html>
<body>
<h2 style="color: {'red' if niveau == 'CRITICAL' else 'orange'};">Alerte Serveur - Aethas38</h2>
<p><strong>Niveau :</strong> {niveau}</p>
<p><strong>Module/Source :</strong> {source}</p>
<p><strong>Détail de l'erreur :</strong></p>
<div style="background-color: #f4f4f4; padding: 10px; border-left: 4px solid red; font-family: monospace;">
{message_erreur}
</div>
<br>
<p><em>Notification automatique de l'Orchestrateur (Phase Debug)</em></p>
</body>
</html>
"""
msg = MIMEMultipart()
msg['From'] = smtp_user
msg['To'] = email_admin
msg['Subject'] = sujet
msg.attach(MIMEText(corps_html, 'html'))
try:
server = smtplib.SMTP(smtp_serveur, smtp_port)
server.starttls()
server.login(smtp_user, smtp_pass)
server.send_message(msg)
server.quit()
# On ne loggue pas la réussite de l'envoi pour éviter une boucle infinie de logs
except Exception as e:
# Affichage terminal pur pour éviter la boucle d'erreurs
print(f"ÉCHEC CRITIQUE : Impossible d'envoyer l'alerte e-mail : {e}")
# Pour connecter ce module au logger existant, il suffira d'importer cette fonction
# dans modules/logger.py et de l'appeler si niveau in ["ERROR", "CRITICAL"].