""" Email Sender pour l'application d'analyse de sentiment Amazon Envoie les résultats d'analyse par email via SMTP Gmail """ import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import os def send_analysis_email( recipient_email, avis_text, sentiment, response_text, sender_email=None, sender_password=None ): """ Envoie les résultats de l'analyse d'avis par email. Args: recipient_email (str): Email du destinataire avis_text (str): Texte de l'avis analysé sentiment (str): Sentiment détecté (Positif/Négatif/Neutre) response_text (str): Réponse générée sender_email (str, optional): Email expéditeur (Gmail) sender_password (str, optional): Mot de passe d'application Gmail Returns: tuple: (success: bool, message: str) Example: >>> success, msg = send_analysis_email( ... "client@example.com", ... "Excellent produit !", ... "Positif", ... "Merci pour votre retour !" ... ) >>> print(msg) ✅ Email envoyé avec succès à client@example.com """ # Utilise les variables d'environnement si non spécifiées if sender_email is None: sender_email = os.getenv("SENDER_EMAIL") if sender_password is None: sender_password = os.getenv("SENDER_PASSWORD") # Vérifications if not sender_email or not sender_password: return False, "❌ Email expéditeur ou mot de passe manquant. Vérifie les secrets HF." if not recipient_email or "@" not in recipient_email: return False, "❌ Email destinataire invalide" try: # Créer le message message = MIMEMultipart("alternative") message["Subject"] = f"Analyse d'avis Amazon - Sentiment : {sentiment}" message["From"] = sender_email message["To"] = recipient_email # Choisir la couleur selon le sentiment if sentiment == "Positif": sentiment_color = "#28a745" sentiment_icon = "✅" elif sentiment == "Négatif": sentiment_color = "#dc3545" sentiment_icon = "❌" else: sentiment_color = "#ffc107" sentiment_icon = "⚠️" # Corps du message en HTML html_body = f"""

🎯 Analyse d'Avis Amazon

Résultats de l'analyse automatique

📝 Avis client

"{avis_text}"

🎯 Sentiment détecté

{sentiment_icon} {sentiment}

💬 Réponse générée

{response_text}
""" # Créer aussi une version texte simple (fallback) text_body = f""" ANALYSE D'AVIS AMAZON ===================== Avis client : "{avis_text}" Sentiment détecté : {sentiment} Réponse générée : {response_text} --- Généré automatiquement par l'application d'analyse de sentiment Master AI Project Management - Collège de Paris """ # Attacher les deux versions text_part = MIMEText(text_body, "plain") html_part = MIMEText(html_body, "html") message.attach(text_part) message.attach(html_part) # Se connecter au serveur SMTP Gmail with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server: server.login(sender_email, sender_password) server.send_message(message) return True, f"✅ Email envoyé avec succès à {recipient_email}" except smtplib.SMTPAuthenticationError: return False, "❌ Erreur d'authentification. Vérifie ton email et mot de passe d'application Gmail." except smtplib.SMTPException as e: return False, f"❌ Erreur SMTP : {str(e)}" except Exception as e: return False, f"❌ Erreur inattendue : {str(e)}" def test_email_sender(): """ Fonction de test pour vérifier l'envoi d'emails. À exécuter en local pour tester la configuration. """ print("🧪 Test de l'envoi d'email...") print("-" * 50) # Exemple de test success, message = send_analysis_email( recipient_email="ton-email-test@example.com", # CHANGE ICI avis_text="Excellent produit, livraison rapide et emballage soigné !", sentiment="Positif", response_text="Merci beaucoup pour votre retour positif ! Nous sommes ravis que vous soyez satisfait de votre achat et de notre service. N'hésitez pas à nous recontacter si besoin.", sender_email="ton-email@gmail.com", # CHANGE ICI sender_password="ton-mot-de-passe-app" # CHANGE ICI ) print(message) print("-" * 50) if success: print("✅ Test réussi ! Vérifie ta boîte mail.") else: print("❌ Test échoué. Vérifie ta configuration.") if __name__ == "__main__": # Exécute le test si le fichier est lancé directement test_email_sender()