Bilgi bankasına dön

Geliştiriciler Test İçin Tek Kullanımlık E-postayı Nasıl Kullanır

E-posta işlevselliğini test etmek sıkıcıdır. Gmail hesabı #47'yi oluştur, doğrula, gelen kutusunu kontrol et, e-postanın ekran görüntüsünü al, her test için tekrarla.

Tek kullanımlık e-posta bunu değiştirir: adres oluştur, akışı test et, sekmeyi kapat. Sıfır temizlik, sıfır manuel iş.

Test Problemi

Geleneksel e-posta test iş akışı:

1. [email protected] ile test kullanıcısı oluştur
2. Parola sıfırlamayı tetikle
3. Başka sekmede Gmail'i aç
4. E-postayı bekle
5. 200 diğer test e-postası arasında bul
6. Test tamamlandı
7. Gelen kutusunda artık 247 test e-postası var

Sorunlar:

  • Gelen kutunuzu kirletir
  • Paralel çalıştırılamaz (aynı adres tekrar kullanılır)
  • Gmail test e-postalarınızı spam olarak işaretleyebilir
  • Yüzlerce test hesabını manuel olarak temizlemeniz gerekir

Çözüm: Tek Kullanımlık E-posta API'si

tempy.email ile:

// Posta kutusu oluştur
const mailbox = await fetch('https://tempy.email/api/v1/mailbox', {
  method: 'POST'
}).then(r => r.json());

// Testinizde kullanın
await yourApp.signup({ email: mailbox.email });

// E-postaları alın
const emails = await fetch(
  `https://tempy.email/api/v1/mailbox/${mailbox.email}/emails`
).then(r => r.json());

console.log(emails[0].subject); // "E-postanızı doğrulayın"

// Adres otomatik olarak süresi dolar - sıfır temizlik

Gerçek Kullanım Senaryoları

1. Entegrasyon Testleri

def test_welcome_email():
    # Geçici posta kutusu oluştur
    r = requests.post('https://tempy.email/api/v1/mailbox')
    email = r.json()['email']

    # Kullanıcı oluştur
    create_user(email=email)

    # Gelen kutusunu kontrol et
    time.sleep(2)
    emails = requests.get(f'https://tempy.email/api/v1/mailbox/{email}/emails')

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

2. E2E Testleri (Cypress/Playwright)

// Her test çalıştırması için benzersiz e-posta oluştur
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();

// Doğrulama e-postasını bekle
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. Yük Testleri

1000 kaydı paralel test edin — her biri benzersiz adresle:

await Promise.all(
  Array(1000).fill().map(async () => {
    const m = await createMailbox();
    await testSignup(m.email);
    // Otomatik süresi dolar, temizlik gerekmez
  })
);

4. E-posta Şablon Doğrulama

// Test e-postası gönder
await sendEmail({
  to: tempAddress,
  template: 'order_confirmation',
  data: { order: '12345', total: '$99' }
});

// Şablonun doğru render edildiğini doğrula
const email = await getEmail(tempAddress);
assert(email.bodyHtml.includes('Order #12345'));
assert(email.bodyHtml.includes('$99'));

API Referansı

Posta kutusu oluştur:

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

E-postaları al:

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

TTL'yi uzat:

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

En İyi Uygulamalar

Test başına benzersiz adres kullanın:

// Her test temiz gelen kutusu alır
test('signup', async () => {
  const email = await createUniqueEmail();
  await testWith(email);
});

E-postaları periyodik olarak sorgulayın:

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-posta alınamadı');
}

Paylaşılan adres kullanmayın:

// Kötü - farklı testlerin e-postaları karışır
const SHARED_EMAIL = '[email protected]';

Zaman Tasarrufu

Önce: 10 dk/test x 100 test/hafta = 1000 dk/hafta = haftada 16,7 saat

Sonra: 30 sn/test x 100 test = haftada 50 dk

Tasarruf: Geliştirici başına haftada 15+ saat.

CI/CD Entegrasyonu

# .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

API anahtarı yok. Hız limiti yok. Sadece çalışır.

Gelen kutunuzu kirletmeyi bırakın. tempy.email ile daha akıllı test edin.

Güncellendi Şubat 12, 2026