import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from config import settings import logging logger = logging.getLogger(__name__) class AuthEmailService: """Service d'envoi d'emails pour l'authentification""" @staticmethod def _send_email(to: str, subject: str, html_body: str) -> bool: """Envoi SMTP générique""" try: msg = MIMEMultipart() msg['From'] = settings.smtp_from msg['To'] = to msg['Subject'] = subject msg.attach(MIMEText(html_body, 'html')) with smtplib.SMTP(settings.smtp_host, settings.smtp_port, timeout=30) as server: if settings.smtp_use_tls: server.starttls() if settings.smtp_user and settings.smtp_password: server.login(settings.smtp_user, settings.smtp_password) server.send_message(msg) logger.info(f"✅ Email envoyé: {subject} → {to}") return True except Exception as e: logger.error(f"❌ Erreur envoi email: {e}") return False @staticmethod def send_verification_email(email: str, token: str, base_url: str) -> bool: """ Envoie l'email de vérification avec lien de confirmation Args: email: Email du destinataire token: Token de vérification base_url: URL de base de l'API (ex: https://api.votredomaine.com) """ verification_link = f"{base_url}/auth/verify-email?token={token}" html_body = f"""

🎉 Bienvenue sur Sage Dataven

Vérifiez votre adresse email

Merci de vous être inscrit ! Pour activer votre compte, veuillez cliquer sur le bouton ci-dessous :

Vérifier mon email

Ou copiez ce lien dans votre navigateur :

{verification_link}

⚠️ Ce lien expire dans 24 heures

Si vous n'avez pas créé de compte, ignorez cet email.

""" return AuthEmailService._send_email( email, "🔐 Vérifiez votre adresse email - Sage Dataven", html_body ) @staticmethod def send_password_reset_email(email: str, token: str, base_url: str) -> bool: """ Envoie l'email de réinitialisation de mot de passe Args: email: Email du destinataire token: Token de reset base_url: URL de base du frontend """ reset_link = f"{base_url}/auth/reset?token={token}" html_body = f"""

🔑 Réinitialisation de mot de passe

Demande de réinitialisation

Vous avez demandé à réinitialiser votre mot de passe. Cliquez sur le bouton ci-dessous pour créer un nouveau mot de passe :

Réinitialiser mon mot de passe

Ou copiez ce lien dans votre navigateur :

{reset_link}

⚠️ Ce lien expire dans 1 heure

Si vous n'avez pas demandé cette réinitialisation, ignorez cet email. Votre mot de passe actuel reste inchangé.

""" return AuthEmailService._send_email( email, "🔐 Réinitialisation de votre mot de passe - Sage Dataven", html_body ) @staticmethod def send_password_changed_notification(email: str) -> bool: """Notification après changement de mot de passe réussi""" html_body = """

✅ Mot de passe modifié

Votre mot de passe a été changé avec succès

Ce message confirme que le mot de passe de votre compte Sage Dataven a été modifié.

⚠️ Si vous n'êtes pas à l'origine de ce changement, contactez immédiatement notre support.

""" return AuthEmailService._send_email( email, "✅ Votre mot de passe a été modifié - Sage Dataven", html_body )