Diagnostic des e-mails

E-mails de test introuvables ? Suivez la chaîne des preuves

Ne commencez pas par changer de modèle ou renvoyer le message en boucle. Vérifiez d’abord que l’application a bien généré le message, puis que la file et le service d’envoi l’ont accepté. Contrôlez enfin l’identité, les règles et le destinataire, en notant l’heure et l’identifiant du message à chaque étape.

Orientation rapide

Quatre étapes pour trouver le point de rupture

Avancez dans l’ordre : sans preuve à l’étape précédente, ne passez pas à la suivante par simple supposition.

1Génération par l’application

L’action métier a-t-elle créé un message pour la bonne adresse de réception ?

2Traitement de la file

La tâche asynchrone a-t-elle bien quitté la file, ou est-elle retardée, en échec ou dupliquée ?

3Acceptation par le prestataire

Le prestataire indique-t-il que le message est accepté, retardé, rejeté ou refusé par une règle ?

4Affichage chez le destinataire

L’adresse est-elle toujours valide, et l’actualisation de la liste comme la lecture du message fonctionnent-elles ?

1. Établir une référence avec un cas minimal

Créez une nouvelle boîte de réception de test, copiez l’adresse, puis déclenchez immédiatement un e-mail au contenu simple et à l’objet unique. Vous pouvez inclure l’identifiant du test dans l’objet, mais jamais de clé de production ni de données client réelles.

Notez l’heure du clic sur le bouton métier, de la mise en file et de l’acceptation par le prestataire. Si l’e-mail simple arrive mais pas le modèle complexe, le problème vient probablement du rendu, des pièces jointes ou des règles de contenu, plutôt que du réseau.

2. Vérifier que l’application génère bien l’e-mail

Vérifiez que l’événement métier remplit les conditions d’envoi : état du compte, activation de l’environnement, règles de déduplication et préférences de notification. Les journaux doivent afficher l’adresse finale du destinataire, et pas seulement un message générique indiquant que la tâche a été créée.

Vérifiez que l’adresse correspond exactement, surtout si l’application conserve en cache une ancienne adresse après le remplacement de la boîte de test. Si aucun message n’est enregistré, corrigez d’abord le déclenchement et les paramètres du modèle, sans passer à l’étude du DNS.

Preuves attendues

  • Identifiant de l’événement métier et version du modèle
  • Adresse du destinataire normalisée
  • Création réussie du message ou erreur explicite

3. Contrôler la file, les tentatives et la chronologie

Les e-mails asynchrones restent souvent bloqués par la connexion à la file, le processus de traitement, l’heure planifiée ou le délai entre les tentatives. Comparez l’heure de mise en file, de la première exécution, de chaque nouvelle tentative et de l’état final pour vérifier que la tâche n’est pas simplement en attente.

Si un même événement génère plusieurs e-mails, vérifiez que la clé d’idempotence reste stable et que le consommateur n’expire pas avant la réponse de succès. Ne masquez pas une erreur déterministe du modèle par des tentatives infinies : vous risqueriez de créer des doublons chez le destinataire.

4. Lire les événements du prestataire d’envoi

Une réponse HTTP 2xx signifie généralement que le prestataire a reçu la requête, pas que le serveur destinataire l’a finalement acceptée. Recherchez ensuite les événements queued, sent, delivered, deferred, bounced ou rejected, et conservez l’identifiant du message fourni par le prestataire.

Les réponses SMTP de type 4xx indiquent généralement un retard temporaire : appliquez le délai recommandé avant une nouvelle tentative. Les réponses 5xx correspondent le plus souvent à un refus définitif : corrigez d’abord l’adresse, l’identité ou la règle concernée. Si aucun message correspondant n’existe chez le prestataire, la rupture se situe encore entre l’application et celui-ci.

5. Vérifier l’identité du domaine expéditeur

Vérifiez que SPF couvre la source d’envoi réelle, que le domaine de signature DKIM correspond au domaine From configuré, et que l’alignement ainsi que la politique DMARC sont cohérents avec l’environnement de test. Après une modification DNS, tenez aussi compte du TTL et du cache des différents résolveurs.

Ne vous contentez pas d’un indicateur vert dans la console : consultez les événements détaillés ou les résultats d’authentification dans les en-têtes bruts. Un domaine de test partagé dont la plateforme d’envoi change souvent peut conserver d’anciennes entrées ou dépasser la limite de recherches SPF.

6. Isoler les problèmes de modèle et de contenu

Envoyez d’abord une version texte de référence, puis ajoutez progressivement le HTML, les images, les liens et les pièces jointes. Si l’échec survient après l’ajout d’un élément, vérifiez la réputation des URL, le type de pièce jointe, l’encodage, la taille du message et les variables de modèle non remplacées.

N’imitez pas un discours d’hameçonnage dans l’objet ou le corps, et n’utilisez jamais de véritables identifiants. Pour tester un code de vérification, utilisez un code fixe clairement marqué comme test afin que personne ne le confonde avec une notification de production.

7. Écarter un problème d’état du destinataire

Vérifiez que le compte à rebours de la boîte de réception de test n’est pas arrivé à zéro et que l’adresse affichée dans la barre d’outils correspond à la cible d’envoi. Actualisez manuellement la page ; après un changement d’adresse, les messages de l’ancienne boîte ne sont pas transférés vers la nouvelle.

Une fois le véritable e-mail arrivé, la ligne de démonstration doit disparaître au profit des données réelles. Ouvrez les détails et contrôlez l’objet, l’expéditeur, l’heure d’arrivée, le corps HTML et la version texte de secours. Ne jugez pas le modèle uniquement à partir de l’aperçu de la liste.

8. Analyser les retards, le désordre et les doublons

Comparez le déclenchement métier, la mise en file, l’acceptation par le prestataire et la réception dans un même fuseau horaire. Vous ne pouvez attribuer le retard à une étape que si celle-ci est nettement plus longue ; des horodatages non harmonisés entre fuseaux faussent l’analyse.

Pour un nouvel essai, utilisez un identifiant d’événement unique tout en conservant les anciens identifiants de message. Si le message envoyé plus tard arrive en premier, vérifiez la priorité de la file, les consommateurs parallèles et les nouvelles tentatives du prestataire, plutôt que d’accuser immédiatement le tri de la boîte.

9. Réduire le périmètre avec une matrice des symptômes

SymptômeÀ vérifier en prioritéÉtape suivante
Aucun journal d’envoi dans l’applicationConditions de déclenchement, activation de l’environnement, paramètres du modèleCorriger le processus métier, puis relancer le cas minimal
Message en file, aucun événement chez le prestataireConsommateur, identifiants, réseau et délais d’expirationConsulter les erreurs de tâche et l’historique des tentatives
Le prestataire affiche deferredSMTP 4xx, débit et réputationAttendre le délai prévu, sans renvois successifs
Le prestataire affiche bouncedAdresse, authentification du domaine, motif du refusCorriger selon le code d’état étendu
Le texte arrive, pas le HTMLLiens, pièces jointes, taille et règles de contenuAjouter les composants un à un pour trouver le déclencheur
delivered affiché, liste videAdresse cible, durée de validité de la boîte et identifiant du messageTransmettre toutes les preuves au support du destinataire

10. Savoir quand transmettre le dossier et quoi fournir

Si les étapes précédentes ne permettent pas d’identifier le problème, rassemblez dans un dossier minimal la chronologie, l’adresse cible, l’identifiant de l’événement métier, l’identifiant du message chez le prestataire, l’état final et les éléments déjà écartés. Supprimez les parties sensibles du corps et ne conservez que les informations nécessaires à la reproduction.

Lorsque vous contactez le support MSGTMP, indiquez l’heure de création et d’expiration de la boîte, précisez si l’adresse a été changée, et communiquez la réponse finale enregistrée par le prestataire d’envoi. N’envoyez ni mot de passe, ni code de connexion, ni clé privée complète ; l’adresse du support est support@msgtmp.com.

Critères de fin du diagnostic

Il ne s’agit pas d’un message arrivé par hasard après un renvoi : vous devez pouvoir identifier le point de rupture, en expliquer la cause et démontrer la stabilité de la correction avec le même cas minimal.