Intégrer Temp Mail aux tests et à la CI

L'API REST de Mail.td est conçue pour les tests bout en bout — vérifier que les inscriptions, réinitialisations de mot de passe et workflows déclenchés par e-mail se comportent correctement. Ce guide se concentre sur les schémas d'intégration pour les outils de test courants.

Pour la référence brute des endpoints (formats requête/réponse), voir la page API ou docs.mail.td.

Selenium / Playwright / Cypress

Le schéma : créer une boîte fraîche avant chaque test, inscrire votre app avec cette adresse, puis interroger l'API pour l'e-mail de vérification.

// Pseudocode — adaptable à n'importe quel framework de test
async function signUpFlow(page) {
  // 1. Créer une boîte temporaire
  const mailbox = await fetch("https://api.mail.td/api/accounts", {
    method: "POST",
    headers: {
      Authorization: "Bearer td_xxx",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      address: `test-${Date.now()}@mail.td`,
      password: "secret"
    })
  }).then(r => r.json());

  // 2. Inscrire votre app avec mailbox.address
  await page.goto("/signup");
  await page.fill("[name=email]", mailbox.address);
  await page.click("button[type=submit]");

  // 3. Polling pour l'e-mail de vérification (jusqu'à 30s)
  for (let i = 0; i < 30; i++) {
    const list = await fetch(
      `https://api.mail.td/api/accounts/${mailbox.id}/messages`,
      { headers: { Authorization: "Bearer td_xxx" } }
    ).then(r => r.json());
    if (list.messages.length > 0) {
      // La réponse de liste n'a pas de corps — récupérez le détail du message pour text_body
      const msg = await fetch(
        `https://api.mail.td/api/accounts/${mailbox.id}/messages/${list.messages[0].id}`,
        { headers: { Authorization: "Bearer td_xxx" } }
      ).then(r => r.json());
      const link = extractLink(msg.text_body);
      await page.goto(link);
      break;
    }
    await new Promise(r => setTimeout(r, 1000));
  }
}

Pipelines CI/CD

Pour GitHub Actions, GitLab CI, CircleCI ou n'importe quel pipeline :

  • Stockez un token API comme secret CI (rotez-le depuis le tableau de bord en cas de fuite)
  • Chaque job de test crée sa propre boîte — évite les races entre jobs parallèles
  • Utilisez une adresse unique par test (ex. test-${RUN_ID}-${TEST_ID}@mail.td) pour faciliter le débogage des échecs
  • Pas besoin de nettoyer — les boîtes expirent automatiquement, aucun script de nettoyage requis

Webhooks pour des pipelines plus rapides (Pro)

Le polling ajoute de la latence à chaque test. Pour de longues suites, enregistrez une URL webhook qui reçoit un POST à l'arrivée d'un nouvel e-mail. Votre test attend la livraison du webhook au lieu de poller 30 fois. Réduit une attente typique de 5–15 secondes à moins d'1 seconde.

Les webhooks sont signés avec HMAC-SHA256 — vérifiez l'en-tête de signature avant traitement.

Installation du SDK

npm install mailtd       # Node.js / TypeScript
pip install mailtd       # Python
go get github.com/mailtd/mailtd-go    # Go

Pour la référence complète des endpoints, voir mail.td/api.

Questions fréquentes

Où obtenir un token API ?

Tableau de bord Pro → API Tokens → Create. Les tokens ont le préfixe `td_` et ne sont affichés qu'une fois à la création — copiez-les et stockez-les dans vos secrets CI ou gestionnaire de mots de passe.

Quelle est la limite de taux ?

Free est 1 requête/seconde ; Pro est 10 requêtes/seconde. Si vous atteignez la limite, l'API retourne 429 avec un en-tête `Retry-After`.

Comment fonctionnent les signatures de webhook ?

Chaque POST de webhook inclut un en-tête de signature dérivé de votre secret webhook. Vérifiez la signature avant de traiter le payload pour confirmer que la requête vient de Mail.td et n'a pas été altérée.

Puis-je exécuter des tests bout en bout en parallèle ?

Oui — donnez à chaque job de test parallèle sa propre boîte pour éviter les races. Le quota Pro de 100 000 ops/mois couvre la plupart des cas CI.

L'API fonctionne-t-elle pour les comptes Free ?

Free inclut 500 opérations API par mois — adapté au scripting léger. Pour CI/CD ou tout ce qui demande plus de débit, passez à Pro pour 100 000 ops/mois et un débit de requêtes plus élevé.