Retour à la base de connaissances

Comment les développeurs utilisent l'e-mail jetable pour les tests

Tester les fonctionnalités e-mail est fastidieux. Créer le compte Gmail #47, le vérifier, consulter la boîte de réception, capturer l'écran, recommencer pour chaque test.

L'e-mail jetable change la donne : générer l'adresse, tester le flux, fermer l'onglet. Zéro nettoyage, zéro travail manuel.

Le problème des tests

Workflow traditionnel de test d'e-mail :

1. Créer un utilisateur test avec [email protected]
2. Déclencher la réinitialisation du mot de passe
3. Ouvrir Gmail dans un autre onglet
4. Attendre l'e-mail
5. Le trouver parmi 200 autres e-mails de test
6. Test terminé
7. La boîte a maintenant 247 e-mails de test

Problèmes :

  • Pollue votre boîte de réception
  • Impossible de paralléliser (la même adresse est réutilisée)
  • Gmail peut marquer vos e-mails de test comme spam
  • Il faut nettoyer manuellement des centaines de comptes de test

Solution : API d'e-mail jetable

Avec tempy.email :

// Créer une boîte aux lettres
const mailbox = await fetch('https://tempy.email/api/v1/mailbox', {
  method: 'POST'
}).then(r => r.json());

// L'utiliser dans votre test
await yourApp.signup({ email: mailbox.email });

// Récupérer les e-mails
const emails = await fetch(
  `https://tempy.email/api/v1/mailbox/${mailbox.email}/emails`
).then(r => r.json());

console.log(emails[0].subject); // "Vérifiez votre e-mail"

// L'adresse expire automatiquement - zéro nettoyage

Cas d'utilisation réels

1. Tests d'intégration

def test_welcome_email():
    # Générer une boîte temporaire
    r = requests.post('https://tempy.email/api/v1/mailbox')
    email = r.json()['email']

    # Créer l'utilisateur
    create_user(email=email)

    # Vérifier la boîte de réception
    time.sleep(2)
    emails = requests.get(f'https://tempy.email/api/v1/mailbox/{email}/emails')

    assert "Welcome" in emails.json()[0]['subject']

2. Tests E2E (Cypress/Playwright)

// Générer un e-mail unique par exécution de test
const mailbox = await cy.request('POST', 'https://tempy.email/api/v1/mailbox');

cy.visit('/signup');
cy.get('[name="email"]').type(mailbox.body.email);
cy.get('button').click();

// Attendre l'e-mail de vérification
cy.wait(2000);
cy.request(`https://tempy.email/api/v1/mailbox/${mailbox.body.email}/emails`)
  .then((res) => {
    const link = extractLink(res.body[0].bodyHtml);
    cy.visit(link);
  });

3. Tests de charge

Tester 1000 inscriptions en parallèle — chacune avec une adresse unique :

await Promise.all(
  Array(1000).fill().map(async () => {
    const m = await createMailbox();
    await testSignup(m.email);
    // Expire automatiquement, pas de nettoyage nécessaire
  })
);

4. Vérification de templates d'e-mail

// Envoyer un e-mail de test
await sendEmail({
  to: tempAddress,
  template: 'order_confirmation',
  data: { order: '12345', total: '$99' }
});

// Vérifier que le template s'est rendu correctement
const email = await getEmail(tempAddress);
assert(email.bodyHtml.includes('Order #12345'));
assert(email.bodyHtml.includes('$99'));

Référence API

Créer une boîte aux lettres :

POST https://tempy.email/api/v1/mailbox
→ { "email": "[email protected]", "expires_at": "..." }

Récupérer les e-mails :

GET https://tempy.email/api/v1/mailbox/{address}/emails
→ [{ "subject": "...", "bodyHtml": "...", ... }]

Prolonger le TTL :

POST https://tempy.email/api/v1/mailbox/{address}/extend
→ Ajoute 5 minutes

Bonnes pratiques

Utiliser des adresses uniques par test :

// Chaque test obtient une boîte fraîche
test('signup', async () => {
  const email = await createUniqueEmail();
  await testWith(email);
});

Interroger les e-mails périodiquement :

async function pollForEmail(address, timeout = 10000) {
  const start = Date.now();
  while (Date.now() - start < timeout) {
    const emails = await getEmails(address);
    if (emails.length > 0) return emails[0];
    await sleep(500);
  }
  throw new Error('E-mail non reçu');
}

Ne pas utiliser d'adresses partagées :

// Mauvais - les e-mails de différents tests se mélangent
const SHARED_EMAIL = '[email protected]';

Gain de temps

Avant : 10 min/test x 100 tests/semaine = 1000 min/semaine = 16,7 heures/semaine

Après : 30 sec/test x 100 tests = 50 min/semaine

Économie : plus de 15 heures par développeur par semaine.

Intégration CI/CD

# .github/workflows/test.yml
name: Email Tests
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - run: npm test -- email.test.js
        env:
          TEMP_EMAIL_API: https://tempy.email/api/v1

Pas de clés API. Pas de limites de débit. Ça fonctionne, tout simplement.

Arrêtez de polluer votre boîte de réception. Testez plus intelligemment avec tempy.email.

Mis à jour février 12, 2026