Si vous développez une automatisation qui “attend un email”, la partie difficile n’est rarement l’analyse HTML. La partie difficile est le routage : comment un message adressé à quelque-chose@votre-domaine arrive de manière déterministe dans la bonne boîte de réception API, à chaque fois, sous les tentatives répétées, la concurrence, et les cas limites SMTP étranges.
Ce guide détaille comment les domaines et les emails interagissent dans les produits de boîtes de réception API, ce qui se passe réellement lors de la livraison SMTP, et les modèles de routage qui rendent les workflows basés sur les boîtes de réception fiables pour les agents IA et l’assurance qualité.
Pour les formes de requête/réponse spécifiques à Mailhook et le contrat canonique, référez-vous au llms.txt du projet.
Routage d’emails 101 : le domaine contrôle la livraison
Une adresse email comporte deux parties :
-
Partie locale : tout ce qui précède
@(par exemplesignup-test-42) -
Domaine : tout ce qui suit
@(par exempleexample.net)
Quand un expéditeur transmet un message, le domaine détermine où l’email est livré sur internet, via DNS.
Les enregistrements MX décident quel serveur reçoit le courrier
Pour les emails entrants, les serveurs expéditeurs recherchent les enregistrements MX pour le domaine destinataire. Les enregistrements MX pointent vers des échangeurs de courrier (noms d’hôtes) qui acceptent le courrier pour ce domaine.
- Si
votredomaine.coma des enregistrements MX pointant vers un fournisseur de boîtes de réception API, les messages vers[email protected]seront livrés à ce fournisseur. - S’il n’y a pas d’enregistrements MX, de nombreux expéditeurs se rabattent sur l’enregistrement A/AAAA du domaine (comportement défini dans les standards SMTP et implémenté par les MTA), mais vous ne devriez pas compter sur ce comportement de repli pour le routage en production.
Si vous voulez le contexte des standards, voir RFC 5321 (SMTP) pour comment SMTP livre aux domaines et comment fonctionne “l’enveloppe”.
Les destinataires d’enveloppe comptent plus que les en-têtes
La livraison SMTP est basée sur l’enveloppe (la transaction SMTP), pas sur ce que l’email “dit” dans ses en-têtes visibles.
Deux champs sont couramment confondus :
-
Destinataire d’enveloppe : ce qui a été fourni au serveur SMTP dans
RCPT TO:<destinataire@domaine> - En-tête To : ce qui est dans les en-têtes du message, qui peut inclure plusieurs adresses, des noms d’affichage, ou même être absent dans certains messages automatisés
Pour l’automatisation, le routage est presque toujours basé sur le destinataire d’enveloppe (ou un équivalent normalisé), car c’est la représentation la plus directe de “quelle adresse a reçu ce message.”
Comment fonctionne le routage dans les boîtes de réception API
Une fois que le fournisseur reçoit le message pour un domaine qu’il contrôle, il doit répondre à une question simple :
Sous quelle ressource de boîte de réception ce message doit-il être stocké ?
C’est là où le “routage de boîte de réception API” diffère de l’email grand public. Dans l’email grand public, le routage se termine à une boîte aux lettres. Dans une API de boîte de réception orientée automatisation, le routage se termine à un identifiant de boîte de réception programmable (souvent exposé comme un ID de boîte de réception) que votre code peut utiliser pour récupérer le message en JSON, s’abonner aux événements webhook, ou traiter les messages par lots.
Les trois couches de routage
La plupart des systèmes de boîtes de réception API peuvent être compris comme trois couches :
- Routage au niveau domaine (DNS) : amène le message au fournisseur
-
Mappage destinataire-vers-boîte (logique applicative) : mappe
partie-locale@domainevers une ressource de boîte de réception - Livraison vers votre code (API/webhooks) : expose le message stocké à vos systèmes
Mailhook est conçu autour de ce modèle d’automatisation, fournissant des boîtes de réception jetables créées par API, une sortie JSON normalisée, des notifications webhook, et un accès par polling (voir le contrat llms.txt pour les endpoints exacts et les formes de payload).
💡 Passez l’infrastructure SMTP et allez directement au routage fiable
Au lieu de construire vos propres serveurs mail et logique de routage, commencez avec les boîtes de réception programmables de Mailhook qui gèrent automatiquement la normalisation d’enveloppe, la conversion JSON, et la livraison webhook. Commencez à développer avec l’API →

Modèles courants de mappage destinataire-vers-boîte
Il existe quelques modèles éprouvés pour mapper une adresse destinataire entrante vers une boîte de réception. Le bon choix dépend de si votre produit veut des adresses stables, des adresses tournantes, ou plusieurs adresses par boîte de réception.
Modèle A : “Clé de boîte encodée” dans la partie locale
La partie locale du destinataire encode directement une clé de routage, comme un ID de boîte de réception ou un token court qui peut être recherché.
Conceptuellement :
- Vous créez une boîte de réception via API
- L’API retourne une adresse email comme
[email protected] - Quand le courrier arrive pour
[email protected], le fournisseur décode ou recherchek9f3p2et route le message vers la boîte de réceptionk9f3p2
Pourquoi c’est populaire :
- Routage rapide avec un minimum de recherches en base de données (selon l’implémentation)
- Les adresses peuvent être générées de manière sûre et unique
- Fonctionne bien pour l’automatisation “une boîte par exécution”
Ce qu’il faut surveiller :
- Si votre partie locale est traitée comme un identifiant, vous voulez qu’elle soit non ambiguë sous les règles de normalisation (par exemple, changement de casse, suppression d’espaces, adressage plus). Les fournisseurs définissent typiquement des règles strictes ici.
Modèle B : Table d’alias (registre d’adresses)
Le fournisseur stocke une table de mappage de l’adresse email complète (ou destinataire normalisé) vers une boîte de réception.
Pourquoi c’est populaire :
- Supporte plusieurs adresses par boîte de réception
- Supporte les comportements “renommer”, “faire tourner”, ou “attacher nouvelle adresse” sans changer l’identifiant de boîte de réception
Ce qu’il faut surveiller :
- Les tables de mappage doivent être indexées et résistantes sous la concurrence
- Vous avez besoin d’une politique de normalisation claire pour ce qui compte comme “la même adresse”
Modèle C : Domaine catch-all avec marquage par message
Un domaine catch-all accepte n’importe quelle partie locale et route les messages basés sur des métadonnées supplémentaires (par exemple, un token ajouté par votre app dans un en-tête, ou une partie structurée du destinataire).
Pourquoi c’est utilisé :
- Utile pour certains workflows d’ingestion (par exemple, adresses style “intake@…”)
Ce qu’il faut surveiller :
- La corrélation passe de “l’adresse identifie uniquement la boîte” à “le message contient un corrélateur”, ce qui peut être moins déterministe sauf si vous contrôlez l’expéditeur.
Domaines partagés vs domaines personnalisés : ce qui change dans le routage
Les fournisseurs de boîtes de réception API offrent habituellement deux stratégies de domaine :
- Domaines partagés : le fournisseur possède et exploite des domaines que vous pouvez utiliser immédiatement
- Domaines personnalisés : vous routez un domaine que vous contrôlez vers le fournisseur (habituellement en configurant les enregistrements MX)
Mailhook supporte les domaines partagés et les configurations de domaines personnalisés (encore une fois, voir llms.txt pour les capacités autoritatives et détails d’intégration).
Une matrice de décision pratique
| Choix | Ce que vous contrôlez | Adaptation typique | Compromis opérationnels |
|---|---|---|---|
| Domaine partagé | Juste le cycle de vie de boîte et la récupération | Tests CI, automatisation QA, tâches d’agent de courte durée | Configuration la plus rapide, mais la réputation du domaine et les contraintes de délivrabilité sont partagées avec d’autres locataires dans beaucoup de systèmes |
| Domaine personnalisé | DNS pour courrier entrant (MX), plus votre réputation de domaine | Staging ressemblant à la production, flux de marque, exigences de délivrabilité plus strictes | Plus de configuration, mais limites de propriété de domaine plus claires et moins de surprises avec les listes blanches |
Notes :
- La délivrabilité est complexe et dépend du comportement de l’expéditeur, de la politique du récepteur, et de la réputation du domaine. Router un domaine personnalisé vous donne principalement le contrôle, pas une garantie.
- Pour les tests, les domaines partagés sont souvent idéaux car ils réduisent la friction de configuration et gardent les environnements jetables.
Ce qui se passe réellement après que le fournisseur reçoit le message
Une fois la livraison SMTP terminée, la plupart des APIs de boîtes de réception orientées automatisation exécutent un pipeline d’ingestion qui ressemble à ceci :
- Accepter SMTP pour un destinataire sur un domaine géré
- Normaliser et analyser le message (en-têtes, structure MIME, corps texte et HTML, pièces jointes)
- Stocker le message et l’indexer sous un identifiant de boîte de réception
- Notifier les consommateurs en aval (événements webhook), et/ou l’exposer via une API de récupération
Le modèle de Mailhook (à haut niveau) est : recevoir l’email entrant, le convertir en JSON structuré, puis le rendre disponible via des webhooks et une API de polling, avec des payloads signés pour vous aider à valider l’authenticité.
Webhooks vs polling n’est pas du routage, mais ça affecte la “sémantique d’attente”
Le routage décide quelle boîte de réception reçoit le message. Les webhooks et le polling décident comment votre code apprend que le message est arrivé.
En automatisation, l’approche la plus robuste est habituellement :
- Webhook d’abord pour la faible latence et le flux dirigé par événements
- Polling de secours pour récupérer des échecs temporaires de webhook, déploiements, ou problèmes réseau
C’est là où les payloads webhook signés comptent : le fournisseur de boîte de réception vous dit “un message pour la boîte X existe”, donc votre récepteur devrait vérifier les signatures avant de traiter l’événement comme réel.
Si vous voulez une discussion de conception plus approfondie, les RFC définissent le transport d’email et le format de message (par exemple RFC 5322 pour les en-têtes de message et la structure du corps), mais la sémantique de livraison webhook est au niveau applicatif.
Modes d’échec de routage pour lesquels vous devriez concevoir
Même avec un DNS parfait, le routage peut échouer au niveau applicatif de manières qui rendent les tests instables ou les agents peu fiables.
1) Collisions dans les boîtes partagées (le problème du “mauvais message”)
Si vous réutilisez la même adresse destinataire à travers des exécutions parallèles, vous pouvez obtenir :
- Plusieurs messages correspondants
- Un ancien OTP réutilisé par accident
- Un message d’une exécution différente qui satisfait par hasard un matcher lâche
La solution est la conception du routage : créer une boîte de réception isolée par exécution (ou par tentative), puis router vers elle en utilisant une adresse unique qui mappe vers cette boîte de réception.
2) Règles de normalisation ambiguës
Certains systèmes traitent Utilisateur@domaine et utilisateur@domaine comme le même destinataire. D’autres pas. Certains traitent l’adressage plus comme une partie locale distincte, d’autres l’enlèvent.
Pour une automatisation déterministe, vous voulez un fournisseur (ou politique interne) qui est explicite sur :
- La gestion de la casse
- Le comportement d’adressage plus
- Le jeu de caractères autorisé pour les parties locales
- La longueur maximale de partie locale
Si vous générez des adresses programmatiquement, gardez les parties locales conservatrices : minuscules, non ambiguës, et libres de caractères qui pourraient être transformés par des systèmes intermédiaires.
3) Destinataires multiples et transfert
Un seul email peut avoir plusieurs destinataires visibles (dans To:/Cc:) et peut aussi être transféré ou renvoyé.
Pour la correction de routage dans une boîte de réception API, préférez utiliser :
- Le destinataire d’enveloppe (l’adresse réelle sur votre domaine qui a reçu l’email)
- Une portée de boîte de réception étroite (boîte-par-exécution)
- Un matcher de message qui inclut au moins un critère stable que vous contrôlez (par exemple, un token de corrélation inséré par votre app)
4) Tentatives répétées, doublons, et livraison dans le désordre
Les expéditeurs SMTP retentent. Votre app peut envoyer plusieurs emails de vérification. Les utilisateurs ou exécuteurs de test peuvent cliquer renvoyer. Les fournisseurs peuvent livrer les événements webhook plus d’une fois.
Le routage met le message dans la bonne boîte de réception, mais votre consommateur doit quand même être robuste :
- Traiter les événements webhook comme “au moins une fois” sauf si documenté autrement
- Dédupliquer en utilisant des identifiants de message stables dans le payload JSON
- Préférer explicite “attendre un message correspondant à X dans un budget temps” plutôt que des sleeps fixes
Routage favorable aux agents : traiter l’identifiant de boîte comme la source de vérité
Pour les agents LLM, la meilleure amélioration de fiabilité est d’arrêter de penser “l’adresse email est l’identifiant” et à la place penser :
- L’identifiant de boîte de réception (ID de boîte) est l’identifiant
- L’adresse email est juste un pointeur routable qui livre le courrier dans cette boîte de réception
Ceci évite un anti-pattern courant : chercher dans une boîte aux lettres partagée pour “le dernier email” et espérer qu’il appartient à votre exécution.
Une interface minimale qui garde les agents en sécurité
Quand vous exposez l’email aux agents, gardez la surface d’outil petite et déterministe. Un modèle pratique ressemble à :
-
create_inbox()retourne un identifiant de boîte de réception et une adresse routable -
wait_for_message(inbox_id, matcher, timeout)bloque jusqu’à ce qu’une correspondance arrive -
get_message(inbox_id, message_id)récupère le JSON normalisé
Puis gardez le LLM focalisé sur seulement ce qu’il doit extraire (OTP, lien magique), pas sur le rendu HTML ou l’exploration du contenu brut.
Mailhook est construit autour de ces primitives (création de boîte de réception jetable, sortie JSON, webhooks, polling, payloads signés), donc vous pouvez implémenter ce style “d’email comme outil” sans faire tourner votre propre pile SMTP. Pour les champs exacts et endpoints, utilisez llms.txt de Mailhook.
💡 Donnez à vos agents IA des outils email déterministes
Implémentez le modèle boîte-par-exécution avec les boîtes de réception jetables programmables de Mailhook. Vos agents obtiennent des messages JSON propres, des notifications webhook, et un routage isolé—pas de collisions de boîte aux lettres partagée. Voir le guide d’intégration agent IA →
Commencez gratuitement pour agents IA → ou Voir les exemples d’intégration →
Une checklist de routage avant de livrer
Utilisez ceci comme une vérification de cohérence quand vous câblez domaines et emails dans un harnais d’automatisation :
- Décider de la stratégie de domaine : domaine partagé pour la vitesse, domaine personnalisé pour le contrôle.
- S’assurer que le routage DNS est correct : les enregistrements MX pour votre domaine personnalisé pointent où vous attendez.
- Utiliser boîte-par-exécution (ou boîte-par-tentative) pour éliminer la diaphonie.
- Traiter le destinataire d’enveloppe comme la clé de routage, pas l’en-tête
To:. - Vérifier les signatures webhook avant d’agir sur les événements.
- Implémenter le polling de secours pour qu’un webhook manqué ne casse pas une exécution.
- Dédupliquer les messages et écrire des matchers qui sont assez étroits pour éviter les faux positifs.
- Garder la rétention et la journalisation minimales, l’email contient souvent des données sensibles.
Où Mailhook s’adapte
Si vous voulez construire ce modèle de routage sans exploiter des serveurs mail, Mailhook fournit des boîtes de réception jetables programmables via API, livre les emails reçus comme JSON structuré, et supporte les webhooks temps réel plus une API de polling, avec des payloads signés pour la sécurité et le traitement par lots d’emails.
Pour intégrer sans deviner, commencez avec la spec canonique : llms.txt Mailhook. Vous pouvez aussi explorer le produit sur Mailhook.