# 🔍 Guide de débogage - Notifications Email Tickets ## ✅ Corrections appliquées 1. **Import Supabase** : Remplacé `createRouteHandlerClient` par `createSbServer` et `createSbServiceRole` 2. **Permissions** : Utilisation de `createSbServiceRole()` pour `getUserById()` 3. **Récupération du prénom** : Depuis `user_metadata.display_name` au lieu de `organization_members.first_name` 4. **Logs ajoutés** : Logs détaillés à chaque étape de l'envoi ## 📋 Comment tester ### 1. Ouvrir le terminal où tourne `npm run dev` ### 2. Envoyer un message depuis `/staff/tickets/[id]` - Écrire un message - **NE PAS** cocher "Note interne" - Cliquer sur "Envoyer" - Confirmer dans le modal ### 3. Surveiller les logs dans le terminal Vous devriez voir ces logs dans l'ordre : #### ✅ Logs attendus (succès) ``` 📧 [POST messages] Envoi de notification email... 📧 [POST messages] Ticket: { id: 'xxx-xxx-xxx', created_by: 'yyy-yyy-yyy' } 📧 [POST messages] Creator user: { hasData: true, email: 'user@example.com', error: null } 📧 [POST messages] Staff profile: { hasData: true, email: 'staff@example.com', error: null } 📧 [POST messages] Envoi vers: user@example.com 📧 [POST messages] Données email: { firstName: 'Jean', staffName: 'Support Team', ticketId: 'xxx-xxx-xxx', ticketSubject: 'Mon problème' } 🔍 [SES DEBUG] sendUniversalEmailV2 called with: { type: 'support-reply', toEmail: 'user@example.com', subject: 'Nouvelle réponse à votre ticket: Mon problème' } ✅ Email sent successfully: [MessageId] ✅ [POST messages] Notification email envoyée à user@example.com pour le ticket xxx-xxx-xxx ``` #### ❌ Logs d'erreur possibles **Problème 1 : Utilisateur introuvable** ``` 📧 [POST messages] Creator user: { hasData: false, email: undefined, error: [Error] } ❌ [POST messages] Email du créateur introuvable ``` → **Solution** : L'utilisateur n'existe pas ou a été supprimé **Problème 2 : Permissions insuffisantes** ``` ❌ [POST messages] Erreur: AuthApiError: User not allowed ``` → **Solution** : Vérifier que `SUPABASE_SERVICE_ROLE_KEY` est bien configurée **Problème 3 : Email invalide** ``` 🚨 [SES DEBUG] Invalid toEmail detected: { toEmail: '', type: 'string' } ``` → **Solution** : L'utilisateur n'a pas d'email configuré **Problème 4 : Erreur SES** ``` ❌ [SES ERROR] Failed to send email: [Error message] ``` → **Solution** : Problème avec AWS SES (quota, email non vérifié, etc.) ## 🔍 Vérifications supplémentaires ### Vérifier la variable d'environnement ```bash # Dans le terminal echo $SUPABASE_SERVICE_ROLE_KEY ``` Doit retourner une longue chaîne commençant par `eyJ...` ### Vérifier la configuration SES ```bash # Vérifier que les variables AWS sont configurées grep "AWS_" .env.local ``` Doit contenir : ``` AWS_REGION=eu-west-3 AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... AWS_SES_FROM_EMAIL=... ``` ### Tester l'envoi d'email directement Vous pouvez créer un petit script de test dans `/scripts/test-email.ts` : ```typescript import { sendSupportReplyEmail } from "@/lib/emailMigrationHelpers"; async function testEmail() { try { await sendSupportReplyEmail("votre-email@example.com", { firstName: "Test", ticketId: "test-123", ticketSubject: "Test d'envoi", staffName: "Équipe Test", staffMessage: "Ceci est un message de test", }); console.log("✅ Email de test envoyé !"); } catch (error) { console.error("❌ Erreur:", error); } } testEmail(); ``` ## 📧 Vérifier les emails envoyés ### Dans AWS SES Console 1. Aller sur https://console.aws.amazon.com/ses/ 2. Région : **Europe (Paris) eu-west-3** 3. Menu : **Email sending** → **Statistics** 4. Vérifier les emails envoyés dans les dernières minutes ### Vérifier les bounces Si l'email n'arrive pas : - Vérifier les **Bounces** (rebonds) dans SES - Vérifier les **Complaints** (plaintes) - Vérifier que l'email destinataire n'est pas dans une liste noire ### Vérifier le spam L'email peut arriver dans les spams. Vérifier : - Dossier spam du destinataire - Promotions (Gmail) - Autres dossiers ## 🎯 Checklist complète - [ ] Le serveur Next.js est redémarré - [ ] Le message est envoyé SANS cocher "Note interne" - [ ] Les logs `📧 [POST messages]` apparaissent dans le terminal - [ ] `Creator user` a `hasData: true` et un email - [ ] `sendUniversalEmailV2` est appelé - [ ] Aucune erreur SES dans les logs - [ ] L'email arrive dans la boîte de réception (ou spam) du destinataire ## 💡 Notes importantes 1. **Les notes internes ne déclenchent PAS d'email** (comportement normal) 2. **L'email est envoyé à l'adresse personnelle** de l'utilisateur (depuis `auth.users`) 3. **Le prénom vient de `display_name`** dans les métadonnées utilisateur 4. **Le nom du staff** vient aussi de `display_name` ou de l'email --- **Si après toutes ces vérifications, l'email n'est toujours pas envoyé, partagez-moi les logs complets du terminal !** *Guide créé le 14 octobre 2025*