ShieldMail API ile Disposable Email Tespiti: Kapsamlı Kullanım Rehberi

ShieldMail API ile Disposable Email Tespiti: Kapsamlı Kullanım Rehberi

Mart 2, 2026

Okuma süresi: 8 dakika

Web sitenize kayıt olan kullanıcıların büyük bir kısmı gerçek email adresleri yerine tempmail.com, guerrillamail.com gibi geçici email servislerini mi kullanıyor? Sahte hesaplar, spam kayıtlar ve doğrulanamayan kullanıcılar veritabanınızı şişirirken gerçek kullanıcı istatistiklerinizi de bozuyor olabilir.

ShieldMail API, 194.000'den fazla disposable email domain'ini anlık olarak tespit eden, Türk geliştiriciler tarafından geliştirilen güçlü bir API servisidir. Bu rehberde, ShieldMail API'yi projelerinize nasıl entegre edeceğinizi adım adım anlatacağız.

ShieldMail API Nedir?

ShieldMail API, bir email adresinin veya domain'in disposable (tek kullanımlık) olup olmadığını kontrol eden RESTful bir servistir. 22'den fazla kaynaktan sürekli güncellenen veritabanı sayesinde yeni ortaya çıkan geçici email servislerini de hızla tespit eder.

API'nin sunduğu temel özellikler:

  • Tek ve toplu email kontrolü — Tek bir email veya yüzlerce email'i aynı anda kontrol edebilirsiniz
  • Önbellek sistemi — Sık sorgulanan domain'ler cache'lenerek yanıt süresi düşürülür
  • Detaylı kullanım istatistikleri — Saatlik, günlük, haftalık ve aylık kullanımınızı takip edebilirsiniz
  • Webhook desteği — Limit aşıldığında anında bildirim alabilirsiniz
  • 14 programlama dili desteği — PHP, JavaScript, Python, C#, Java, Go, Ruby, Swift, Kotlin, Rust ve daha fazlası

Başlamadan Önce: Hesap Oluşturma ve Kurulum

Adım 1: Ücretsiz Hesap Oluşturun

https://api.teknikzeka.net/tempmail/user/?page=register adresine giderek ücretsiz hesabınızı oluşturun. Kayıt işlemi tamamlandığında size otomatik olarak bir API Key atanacaktır. Bu key, tüm API isteklerinizde kimlik doğrulama için kullanılır.

Adım 2: Domain Tanımlayın (Zorunlu)

Bu adım çok önemlidir ve atlanmamalıdır. ShieldMail API, güvenlik nedeniyle sadece tanımlı domain'lerden gelen istekleri kabul eder. Kullanıcı panelindeki "Domainler" sekmesinden API'yi kullanacağınız web sitenizin domain'ini eklemeniz gerekmektedir.

Örneğin, www.orneksite.com üzerinde kullanacaksanız bu domain'i panelden tanımlayın. Domain eklenmeden yapılan API istekleri NO_DOMAIN_DEFINED hatası döndürecektir.

Not: Postman, cURL gibi araçlarla test ederken referer header'ı gönderilmediği için domain kontrolü devre dışı kalır ve doğrudan test yapabilirsiniz.

Adım 3: Plan Seçimi

ShieldMail API, farklı ihtiyaçlara yönelik esnek planlar sunmaktadır:

Özellik Free Basic Pro
Saatlik Limit 50 200 1.000
Günlük Limit 500 2.000 10.000
Aylık Limit 5.000 30.000 200.000
Domain Sayısı 1 3 10
Toplu Kontrol 5 email 20 email 100 email
Cache
Webhook

Planlar haftalık, aylık veya yıllık olarak satın alınabilir. Yıllık planlarda önemli tasarruflar sağlanmaktadır. Ücretsiz plan, küçük projeler ve test amaçlı kullanım için yeterlidir.

API Kullanımı: Temel İşlemler

Kimlik Doğrulama

Tüm API isteklerinde kimlik doğrulama için API Key gönderilmelidir. İki yöntem desteklenir:

1. HTTP Header (Önerilen):

X-API-Key: sm_YOUR_API_KEY_HERE

2. Query Parametresi:

?key=sm_YOUR_API_KEY_HERE

Güvenlik açısından header yöntemi önerilir, çünkü query parametreleri sunucu loglarında görünür kalabilir.

Tek Email Kontrolü

En temel kullanım senaryosu, bir email adresinin disposable olup olmadığını kontrol etmektir:

GET https://api.teknikzeka.net/tempmail/api/?action=check&email=test@tempmail.com
Header: X-API-Key: sm_YOUR_API_KEY_HERE

Başarılı yanıt (engelli email):

{
  "success": true,
  "data": {
    "domain": "tempmail.com",
    "blocked": true,
    "disposable": true,
    "cached": false
  },
  "usage": {
    "hourly": "5/50",
    "daily": "12/500",
    "weekly": "45/2000",
    "monthly": "180/5000"
  }
}

Başarılı yanıt (temiz email):

{
  "success": true,
  "data": {
    "domain": "gmail.com",
    "blocked": false,
    "disposable": false,
    "cached": true
  },
  "usage": {
    "hourly": "6/50",
    "daily": "13/500"
  }
}

Yanıttaki önemli alanlar:

  • blocked — Domain engelli listesinde mi? (true/false)
  • disposable — Disposable email servisi mi?
  • cached — Sonuç önbellekten mi geldi?
  • usage — Mevcut kullanım durumunuz

Toplu Email Kontrolü

Birden fazla email'i tek istekte kontrol etmek için bulk_check endpoint'ini kullanabilirsiniz. Bu özellik, veritabanınızdaki mevcut kullanıcıları taramak veya toplu içe aktarma sırasında filtreleme yapmak için idealdir.

POST https://api.teknikzeka.net/tempmail/api/?action=bulk_check
Header: X-API-Key: sm_YOUR_API_KEY_HERE
Header: Content-Type: application/json

{
  "emails": [
    "user@tempmail.com",
    "contact@gmail.com",
    "info@guerrillamail.com"
  ]
}

Yanıt:

{
  "success": true,
  "data": [
    {
      "email": "user@tempmail.com",
      "domain": "tempmail.com",
      "blocked": true,
      "disposable": true
    },
    {
      "email": "contact@gmail.com",
      "domain": "gmail.com",
      "blocked": false,
      "disposable": false
    },
    {
      "email": "info@guerrillamail.com",
      "domain": "guerrillamail.com",
      "blocked": true,
      "disposable": true
    }
  ],
  "total": 3,
  "blocked_count": 2
}

Kullanım İstatistikleri

Mevcut planınızın limitlerini ve ne kadar kullandığınızı görmek için:

GET https://api.teknikzeka.net/tempmail/api/?action=usage

Bu endpoint; plan bilgilerinizi, limitlerinizi, mevcut kullanımınızı ve kalan hakkınızı detaylı olarak döndürür.

Gerçek Dünya Entegrasyon Örnekleri

Kayıt Formunda Kullanım (PHP)

En yaygın kullanım senaryosu, kullanıcı kayıt formlarında disposable email'leri engellemektir:

<?php
function isDisposableEmail(string $email): bool {
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => 'https://api.teknikzeka.net/tempmail/api/?action=check&email=' . urlencode($email),
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 5,
        CURLOPT_HTTPHEADER => ['X-API-Key: API_KEYINIZ'],
    ]);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);
    return ($res['success'] ?? false) && ($res['data']['blocked'] ?? false);
}

// Kayıt formunda kullanım
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = trim($_POST['email']);

    if (isDisposableEmail($email)) {
        $hata = 'Geçici email adresleri kabul edilmemektedir. Lütfen gerçek bir email adresi kullanın.';
    } else {
        // Kayıt işlemine devam et...
    }
}

JavaScript ile Form Doğrulama

Kullanıcı formu göndermeden önce tarayıcı tarafında kontrol yaparak gereksiz sunucu yükünü azaltabilirsiniz:

document.getElementById('kayitForm').addEventListener('submit', async (e) => {
    e.preventDefault();
    const email = document.getElementById('email').value;

    const sonuc = await fetch(
        `https://api.teknikzeka.net/tempmail/api/?action=check&email=${encodeURIComponent(email)}`,
        { headers: { 'X-API-Key': 'API_KEYINIZ' } }
    ).then(r => r.json());

    if (sonuc.success && sonuc.data.blocked) {
        alert('Geçici email adresleri kabul edilmez!');
        return;
    }

    e.target.submit(); // Email temizse formu gönder
});

Python Flask Middleware

import requests
from flask import Flask, request, jsonify

app = Flask(__name__)

def is_disposable(email):
    try:
        r = requests.get(
            'https://api.teknikzeka.net/tempmail/api/',
            params={'action': 'check', 'email': email},
            headers={'X-API-Key': 'API_KEYINIZ'},
            timeout=5
        )
        data = r.json()
        return data.get('success') and data['data'].get('blocked')
    except:
        return False

@app.route('/register', methods=['POST'])
def register():
    email = request.json.get('email', '')
    if is_disposable(email):
        return jsonify({'error': 'Disposable email kabul edilmez'}), 400
    return jsonify({'message': 'Kayıt başarılı'})

Hata Yönetimi

API, hata durumlarında anlamlı HTTP durum kodları ve detaylı hata mesajları döndürür. Uygulamanızda bu hataları doğru şekilde yakalamanız önemlidir.

HTTP Kodu Hata Kodu Açıklama
401 AUTH_REQUIRED API key gönderilmemiş
401 INVALID_KEY Geçersiz API key
403 NO_DOMAIN_DEFINED Panelden domain tanımlanmamış
403 DOMAIN_NOT_ALLOWED İstek yapılan domain yetkilendirilmemiş
429 RATE_LIMITED Kullanım limiti aşıldı
400 MISSING_PARAM Gerekli parametre eksik

Örnek hata yanıtı:

{
  "success": false,
  "error": {
    "code": "RATE_LIMITED",
    "message": "Hourly limit exceeded. 50/50 used.",
    "retry_after": 1842
  }
}

retry_after alanı, tekrar deneme yapabileceğiniz süreyi saniye cinsinden belirtir. Bu değeri kullanarak otomatik yeniden deneme mekanizması kurabilirsiniz.

Webhook Bildirimleri (Pro Plan)

Pro plan kullanıcıları, API limitleri aşıldığında otomatik bildirim almak için webhook yapılandırabilir. Kullanıcı panelindeki Ayarlar sekmesinden webhook URL'nizi tanımlayabilirsiniz.

Limit aşıldığında ShieldMail, belirlediğiniz URL'ye şu formatta bir POST isteği gönderir:

{
  "event": "rate_limit_exceeded",
  "user_id": 42,
  "period": "hourly",
  "limit": 1000,
  "current_usage": 1001,
  "timestamp": "2025-03-02T09:45:00Z"
}

En İyi Uygulamalar ve İpuçları

1. Timeout Ayarı Yapın

API isteklerinizde mutlaka bir timeout değeri belirleyin (önerilen: 5 saniye). Böylece API'de olası bir gecikme durumunda uygulamanız askıda kalmaz ve kullanıcı deneyimi olumsuz etkilenmez.

2. Hata Durumunda Kayıt Engellemeyin

API'ye ulaşılamadığında veya timeout oluştuğunda, kayıt işlemini engellemeyin. API yanıt vermezse kullanıcının kaydını kabul edin ve daha sonra kontrol edin. Böylece API kesintisi kullanıcılarınızı etkilemez.

3. Sonuçları Kendi Tarafınızda Önbelleğe Alın

Aynı domain'i tekrar tekrar sorgulamak yerine, sonuçları kendi veritabanınızda veya Redis/Memcached gibi bir cache katmanında saklayın. Bu hem API limitinizi korur hem de yanıt süresini düşürür.

4. Toplu Kontrolü Tercih Edin

Birden fazla email kontrol edecekseniz, her biri için ayrı istek yerine bulk_check endpoint'ini kullanın. Tek istekte birden fazla email kontrolü yaparak hem hız kazanırsınız hem de API çağrı sayınızı azaltırsınız.

5. Hem Sunucu Hem İstemci Tarafında Kontrol Edin

JavaScript ile istemci tarafında anlık geri bildirim verin, ancak son kararı sunucu tarafında PHP/Python/Node.js ile verin. İstemci tarafı kontroller kolayca atlatılabilir.

API Dokümantasyonu ve Destek

Daha fazla bilgi, 14 farklı programlama dilinde kod örnekleri ve detaylı teknik dokümantasyon için:

Ücretsiz plan ile hemen başlayabilir, projeniz büyüdükçe ihtiyacınıza uygun plana geçebilirsiniz. ShieldMail API, web uygulamalarınızı sahte kayıtlardan korumanın en pratik ve güvenilir yollarından biridir.