Aller au contenu
Facteur
ENCommencer

Test email

Une boîte de réception que vos tests peuvent interroger

Un serveur SMTP dédié par inbox, une API qui attend le message pour vous, et tout ce qu’il contient déjà découpé.

facture.spec.tsTypeScript
// Plusieurs critères, correspondance ET ou OU.
const messages = await facteur.messages.search({
  inbox: 'j3k9x2mq',
  match: 'all',
  sentTo: address,
  subject: 'Votre facture',
  receivedAfter: startOfTest,
});

// Le MIME complet, rien n'est masqué.
const [message] = messages;
message.subject;       // 'Votre facture de juillet'
message.html.body;     // corps HTML brut
message.text.body;     // équivalent texte
message.headers['message-id'];
message.attachments[0].filename;

// Export .eml pour rejouer le message ailleurs.
const eml = await facteur.messages.eml(message.id);
otp.spec.tsTypeScript
// Extrait à la réception, pas par vos regex.
message.otp;      // '265279'
message.links;    // [{ href, text }, ...]
message.codes;    // tous les codes détectés
message.images;   // [{ src, alt }, ...]

// Un parcours 2FA complet sans téléphone.
const device = await facteur.authenticator.create();
const secret = device.sharedSecret;

await page.getByLabel('Clé secrète').fill(secret);
await page.getByLabel('Code').fill(await device.otp());

Réception

Ce que fait le moteur

Adresses illimitées, sans création préalable

*@<inbox>

Toute adresse se terminant par le domaine de l’inbox y arrive. Vous générez des adresses uniques par test, sans appel d’API et sans risque de collision entre exécutions parallèles.

Attente bloquante, pas de polling

messages.await

L’API garde la connexion ouverte jusqu’à l’arrivée d’un message correspondant à vos critères, avec un délai maximum que vous fixez. Vos tests ne contiennent plus de sleep arbitraire, donc ils cessent d’être instables.

MIME intégral

HTML, texte, en-têtes complets, encodage, pièces jointes, et export .eml. Ce qui est arrivé sur le port 25 est ce que vous lisez.

Extraction automatique

Codes OTP, liens, boutons et images sont sortis du corps du message à la réception. Plus de regex fragile recopiée dans chaque suite de tests.

Envoi, réponse et transfert

Répondez à un message, transférez-le vers une adresse externe vérifiée, ou émettez un email depuis une adresse de l’inbox pour tester une boucle entrante.

Domaine personnalisé

Utilisez votre propre domaine plutôt que le nôtre, si vos tests dépendent du domaine du destinataire — filtres anti-spam, listes d’autorisation, personnalisation.

Rétention configurable, inbox par inbox

De 1 à 90 jours selon votre plan. En mode performance, le contenu n’est jamais écrit sur disque : nous confirmons la réception et nous jetons le message.

Cloisonnement par équipe

Chaque inbox a sa liste d’accès, ses quotas et ses clés API. La CI de l’équipe A ne voit ni ne consomme celle de l’équipe B.

Connectivité

Trois façons d’y accéder

L’API REST couvre tout, mais vos outils existants n’ont pas besoin d’être réécrits pour autant.

REST + SDK

Une API documentée en OpenAPI, d’où sont générés les SDK Node, Python, Java, Go et .NET. Recettes prêtes pour Playwright, Cypress, Selenium et Robot Framework.

SMTP, POP3, IMAP

Identifiants par inbox. Branchez un vrai client de messagerie sur une inbox de test, ou faites-la lire par un outil qui ne parle que POP3.

Webhooks

Chaque message reçu peut déclencher un appel HTTP signé en HMAC vers votre système, avec réessais et journal des livraisons.

Votre première inbox dans deux minutes

Le plan gratuit ne demande pas de carte bancaire. Si vous migrez depuis Mailosaur, la couche de compatibilité vous évite de réécrire vos tests.