Aller au contenu
Facteur
ENCommencer

Ce qui est extrait d'un message, sans rien configurer

Code à usage unique, liens, codes et en-têtes — ce que l'analyse trouve seule, et ce qu'elle ne trouve pas.

Un test n’a presque jamais besoin du corps d’un email. Il a besoin d’une chose dans le corps : un code à six chiffres, un lien de confirmation, un jeton. L’analyse la sort pour vous, à la réception, sans configuration.

Ce que vous obtenez

ChampCe qu’il porte
otpLe code à usage unique, si le message en contient un seul évident
codesLes autres suites de chiffres ou de caractères qui ressemblent à des codes
linksToutes les URL du message, déséchappées
headersLes en-têtes, en minuscules, pour retrouver les vôtres
text.body / html.bodyLes deux versions, telles qu’envoyées

Les liens sont déséchappés, et c’est un détail qui a déjà coûté cher

Un lien écrit dans du HTML porte des entités : & pour &. Un test qui suit un lien encore échappé demande au serveur une URL dont le second paramètre s’appelle amp;next — et reçoit une page qui n’est pas celle qu’il attendait, sans erreur.

Le défaut est réel : il a été trouvé chez nous, en relisant notre propre courrier transactionnel dans notre propre produit. Les liens que l’API renvoie sont déséchappés.

otp contre codes

otp est renseigné quand le message contient un candidat clair. Dès qu’il y en a plusieurs — un code de confirmation et un numéro de commande à six chiffres — l’ambiguïté est réelle, et nous ne la tranchons pas au hasard : otp reste vide et les candidats vont dans codes.

C’est le moment de passer à un pointeur nommé, qui dit regarder plutôt que à quoi ça ressemble. Voir pointeurs.

Les en-têtes sont votre meilleur outil de corrélation

L’analyse conserve les en-têtes du message. Si votre application en pose un qui identifie l’exécution — X-Test-Id, X-Correlation-Id — vous le retrouvez tel quel :

const message = messages.find((m) => m.headers['x-test-id'] === executionId);

Les clés sont en minuscules, toujours. Un en-tête est insensible à la casse sur le fil, et le comparer tel qu’envoyé produit un test qui marche jusqu’au jour où la bibliothèque d’envoi change de capitalisation.

Ce que l’analyse ne fait pas

  • Elle ne devine pas votre format. Un identifiant maison ne ressemble à rien de connu. C’est exactement ce que les pointeurs adressent.
  • Elle ne lit pas les pièces jointes.
  • Elle ne s’exécute pas sur un message refusé. Au-delà du quota, rien n’est stocké ni analysé — voir quotas-et-retention.
  • Elle a lieu après l’acquittement SMTP. D’où le champ status, et pourquoi il faut le lire : lire-un-message.