eadl:bloc3:dev_av:td4

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
eadl:bloc3:dev_av:td4 [2025/11/10 07:13] – [8. Dépannage] jcheroneadl:bloc3:dev_av:td4 [2025/11/10 16:28] (Version actuelle) – [Concepts clés à retenir] jcheron
Ligne 1310: Ligne 1310:
 <WRAP round bloc info> <WRAP round bloc info>
 **Mailpit** = Serveur SMTP de test avec interface web moderne **Mailpit** = Serveur SMTP de test avec interface web moderne
-  * ✅ Capture tous les emails envoyés par l'application +  * Capture tous les emails envoyés par l'application 
-  * ✅ Interface web pour visualiser les emails +  * Interface web pour visualiser les emails 
-  * ✅ Aucune configuration SMTP complexe +  * Aucune configuration SMTP complexe 
-  * ✅ Parfait pour le développement+  * Parfait pour le développement
 </WRAP> </WRAP>
  
Ligne 1450: Ligne 1450:
  
 <WRAP round bloc important> <WRAP round bloc important>
-**⚠️ Mailpit est uniquement pour le développement !**+** Mailpit est uniquement pour le développement !**
  
 En **développement** (Mailpit) : En **développement** (Mailpit) :
Ligne 1472: Ligne 1472:
 </sxh> </sxh>
  
-**🔐 Bonnes pratiques :**+** Bonnes pratiques :**
   * Ne **jamais** commiter les credentials SMTP dans le code   * Ne **jamais** commiter les credentials SMTP dans le code
   * Utiliser des **variables d'environnement**   * Utiliser des **variables d'environnement**
Ligne 1525: Ligne 1525:
 </code> </code>
  
-==== 7.1 Ajouter MailHog au docker-compose.yml ==== 
  
-<sxh yaml> 
-  mailhog: 
-    image: mailhog/mailhog:latest 
-    container_name: ecommerce-mailhog 
-    ports: 
-      - "1025:1025"  # SMTP 
-      - "8025:8025"  # Web UI 
-    networks: 
-      - ecommerce-network 
-</sxh> 
  
-==== 7.2 Configuration Spring ==== 
  
-Modifier **''src/main/resources/application-dev.properties''** : 
  
-<sxh properties> 
-# MailHog 
-spring.mail.host=localhost 
-spring.mail.port=1025 
-spring.mail.username= 
-spring.mail.password= 
-spring.mail.properties.mail.smtp.auth=false 
-spring.mail.properties.mail.smtp.starttls.enable=false 
- 
-notification.email.enabled=true 
-notification.email.from=noreply@ecommerce-demo.com 
- 
-# Logs pour voir les envois 
-logging.level.org.springframework.mail=DEBUG 
-</sxh> 
- 
-==== 7.3 Améliorer les logs dans EmailNotificationSender ==== 
- 
-<sxh kotlin> 
-override fun send(recipient: String, subject: String, content: String) { 
-    try { 
-        val message = mailSender.createMimeMessage() 
-        val helper = MimeMessageHelper(message, true, "UTF-8") 
-         
-        helper.setFrom(fromEmail) 
-        helper.setTo(recipient) 
-        helper.setSubject(subject) 
-        helper.setText(content, true) 
-         
-        mailSender.send(message) 
-         
-        logger.info("✅ Email sent to: $recipient") 
-        logger.debug("🌐 Check MailHog UI: http://localhost:8025") 
-         
-    } catch (e: Exception) { 
-        logger.error("❌ Failed to send email", e) 
-        throw RuntimeException("Email sending failed", e) 
-    } 
-} 
-</sxh> 
- 
-==== 7.4 Test ==== 
- 
-<sxh bash> 
-# 1. Démarrer MailHog 
-docker-compose up -d mailhog 
- 
-# 2. Lancer l'application avec le profil dev 
-mvn spring-boot:run -P dev 
- 
-# 3. Créer une commande 
-curl -X POST http://localhost:8080/api/orders \ 
-  -H "Content-Type: application/json" \ 
-  -d '{ 
-    "customerId": 1, 
-    "customerEmail": "test@example.com", 
-    "items": [{"productId": 1, "quantity": 2, "price": 29.99}] 
-  }' 
- 
-# 4. Ouvrir MailHog 
-open http://localhost:8025 
-</sxh> 
- 
-<WRAP round bloc todo> 
-**Résultat attendu :** 
-  * Email visible dans MailHog en < 2 secondes 
-  * Sujet : "Order Confirmation #XXX" 
-  * Contenu : Détails de la commande en HTML 
-</WRAP> 
- 
-<WRAP round bloc important> 
-**Production vs Développement :** 
- 
-En **développement** (MailHog) : 
-<code properties> 
-spring.mail.host=localhost 
-spring.mail.port=1025 
-</code> 
- 
-En **production** (SMTP réel) : 
-<code properties> 
-spring.mail.host=smtp.gmail.com 
-spring.mail.port=587 
-spring.mail.username=${SMTP_USERNAME} 
-spring.mail.password=${SMTP_PASSWORD} 
-spring.mail.properties.mail.smtp.auth=true 
-spring.mail.properties.mail.smtp.starttls.enable=true 
-</code> 
- 
-⚠️ **Ne jamais commiter les credentials SMTP !** 
-</WRAP> 
  
 ===== Livrables attendus ===== ===== Livrables attendus =====
Ligne 1668: Ligne 1564:
  
   * Ajout du canal SMS   * Ajout du canal SMS
-  * Template d'email avec Thymeleaf+  * Template d'email avec Thymeleaf/mustache
   * Retry automatique en cas d'échec   * Retry automatique en cas d'échec
   * Dashboard des notifications dans H2 console   * Dashboard des notifications dans H2 console
Ligne 1681: Ligne 1577:
   * **Observer** : Spring Events pour la communication inter-domaines   * **Observer** : Spring Events pour la communication inter-domaines
   * **Strategy** : ''NotificationSender'' avec différentes implémentations   * **Strategy** : ''NotificationSender'' avec différentes implémentations
-  * **Factory** : Injection automatique de tous les senders+  * **Factory** : Injection automatique de tous les senders (pas le pattern Factory en lui-même)
   * **Dependency Inversion** : ''OrderService'' ne dépend que d'abstractions   * **Dependency Inversion** : ''OrderService'' ne dépend que d'abstractions
  
  • eadl/bloc3/dev_av/td4.1762755183.txt.gz
  • Dernière modification : il y a 4 mois
  • de jcheron