İçeriğe atla
Cloudflare Wiki

    gez · aç · Esc kapat

    Email Service

    İşlemsel e-posta gönderir ve alır; Workers binding’i, REST API veya SMTP ile.

    • DurumAçık beta
    • FiyatGiden e-posta sayısı; gelen e-posta ücretsiz ve sınırsız
    • Doğrulama

    Email Service nedir?

    Her uygulama er ya da geç e-posta gönderir: şifre sıfırlama, sipariş onayı, uyarı bildirimi. Bunun için genelde üçüncü taraf bir sağlayıcıya abone olunur.

    Cloudflare Email Service bu ihtiyacı aynı platform içinde karşılar. İki parçası vardır:

    ParçaNe yaparDurum
    Email RoutingAlan adına gelen e-postayı mevcut kutuna yönlendirirGenel kullanımda, ücretsiz, sınırsız
    Email SendingUygulamandan giden işlemsel e-postayı gönderirBeta, Workers Paid gerektirir

    Nasıl çalışır?

    Üç gönderim yolu

    YolNasılNe zaman
    Workers bindingenv.EMAIL.send()Worker içinden gönderiyorsan
    REST APIPOST /accounts/{account_id}/email/sending/sendCloudflare dışından, herhangi bir dilden
    SMTPsmtps://smtp.mx.cloudflare.net:465Mevcut uygulamanın yalnızca SMTP ayarı değiştirilebiliyorsa

    Yeni kod yazıyorsan binding veya REST API tercih et; SMTP daha çok eski uygulamaları taşımak için vardır.

    Doğrulanmış hedefler ayrı bir kategori

    Bu, fiyatlandırmanın en önemli ayrıntısıdır:

    “Sends to verified destination addresses are free and do not count toward the included quota.”

    Yani hesabında doğrulanmış bir adrese gönderim her planda ücretsizdir ve kotaya sayılmaz. Kendine sistem uyarısı göndermek, bir iç ekibe rapor yollamak gibi senaryolar bu kapsamda kalır. Ayrıca bu adreslere gönderimde mesaj boyutu sınırı 5 MiB yerine 25 MiB’dır.

    Teslim edilebilirlik

    Gönderim yapacağın alan adının doğrulanması gerekir. İşlemsel e-posta teslim edilebilirliği üç DNS kaydına dayanır:

    KayıtNe yapar
    SPFHangi sunucuların senin adına gönderebileceğini beyan eder
    DKIMMesajı kriptografik olarak imzalar
    DMARCSPF ve DKIM başarısız olursa alıcının ne yapacağını söyler

    Cloudflare kurulum sırasında gereken kayıtları panelde gösterir. Alan adın zaten Cloudflare DNS’inde ise kayıtlar tek tıkla eklenebilir.

    Ne zaman kullanılır, ne zaman kullanılmaz

    Uygun olduğu işler

    • Şifre sıfırlama, doğrulama kodu, sipariş onayı gibi işlemsel e-postalar
    • Sistem uyarıları ve iç bildirimler (özellikle doğrulanmış adreslere — ücretsiz)
    • Gelen e-postayı bir Worker ile işleyip yanıtlayan akışlar
    • Alan adındaki e-posta adreslerini mevcut kutuya yönlendirme (Email Routing)

    Uygun olmadığı işler

    • Ücretsiz plan. Giden e-posta kullanılamaz.
    • Pazarlama e-postası ve bülten. Bu ürün işlemsel e-posta için tasarlandı; kampanya yönetimi, segmentasyon, açılma takibi gibi özellikler yok. Türkiye’de ticari elektronik ileti ayrıca İYS yükümlülüğü doğurur.
    • Yüksek hacimli toplu gönderim. Günlük kota muhafazakâr başlar ve kademeli artar.
    • Tek başına kritik yol. Beta olduğu için şifre sıfırlama gibi kritik akışlarda yedek sağlayıcı düşünmek gerekir.
    • 50’den fazla alıcıya tek mesaj. Sınır sert; bölmek gerekir.

    Somut örnekler

    1. Worker’dan işlemsel e-posta

    export default {
      async fetch(request, env) {
        const { eposta, kod } = await request.json();
    
        await env.EMAIL.send({
          from: { email: "bildirim@sirket.com", name: "Şirket" },
          to: [{ email: eposta }],
          subject: "Doğrulama kodunuz",
          text: `Doğrulama kodunuz: ${kod}\n\nBu kod 10 dakika geçerlidir.`,
          html: `<p>Doğrulama kodunuz: <strong>${kod}</strong></p>
                 <p>Bu kod 10 dakika geçerlidir.</p>`,
        });
    
        return Response.json({ gonderildi: true });
      },
    };

    wrangler.jsonc:

    {
      "name": "eposta-worker",
      "main": "src/index.ts",
      "compatibility_date": "2026-08-31",
      "send_email": [{ "name": "EMAIL" }]
    }

    2. Cloudflare dışından REST API ile

    curl -X POST \
      "https://api.cloudflare.com/client/v4/accounts/$HESAP_ID/email/sending/send" \
      -H "Authorization: Bearer $CF_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "from": { "email": "bildirim@sirket.com", "name": "Şirket" },
        "to": [{ "email": "kullanici@ornek.com" }],
        "subject": "Siparişiniz onaylandı",
        "text": "Siparişiniz hazırlanıyor."
      }'

    3. Kuyrukla toplu gönderim — alıcı sınırını aşmadan

    50 alıcı sınırı sert olduğu için toplu bildirimler kuyruğa alınmalıdır.

    export default {
      // Üretici: gönderilecekleri kuyruğa yaz
      async fetch(request, env) {
        const { alicilar, konu, govde } = await request.json();
    
        for (let i = 0; i < alicilar.length; i += 50) {
          await env.EPOSTA_KUYRUGU.send({
            grup: alicilar.slice(i, i + 50),
            konu,
            govde,
          });
        }
        return Response.json({ kuyruga_alindi: alicilar.length });
      },
    
      // Tüketici: her grubu tek mesajda gönder
      async queue(batch, env) {
        for (const mesaj of batch.messages) {
          const { grup, konu, govde } = mesaj.body;
          try {
            await env.EMAIL.send({
              from: { email: "bildirim@sirket.com", name: "Şirket" },
              to: grup.map((e) => ({ email: e })),   // en fazla 50
              subject: konu,
              text: govde,
            });
            mesaj.ack();
          } catch (h) {
            mesaj.retry();   // kuyruk yeniden dener
          }
        }
      },
    };

    4. Gelen e-postayı işleme

    export default {
      async email(mesaj, env, ctx) {
        const gonderen = mesaj.from;
        const konu = mesaj.headers.get("subject") ?? "";
    
        // Destek talebi gibi görünüyorsa kaydet ve otomatik yanıt gönder
        if (konu.toLocaleLowerCase("tr").includes("destek")) {
          await env.DB.prepare(
            "INSERT INTO talepler (gonderen, konu, alindi) VALUES (?, ?, ?)",
          ).bind(gonderen, konu, Date.now()).run();
    
          await env.EMAIL.send({
            from: { email: "destek@sirket.com", name: "Destek" },
            to: [{ email: gonderen }],
            subject: `Re: ${konu}`,
            text: "Talebiniz alındı. En kısa sürede dönüş yapacağız.",
          });
          return;
        }
    
        // Diğerlerini insan ekibe ilet
        await mesaj.forward("ekip@sirket.com");
      },
    };

    Demo 1: Alan adı doğrulama ve ilk gönderim

    Adım 1 — Alan adını Email Sending için yapılandır

    Panel → Email → Email Sending → alan adı ekle.

    Email → Email Sending bölümünde alan adı ekleme adımı ve doğrulama durumunun beklemede görünmesi
    Panelin listelediği SPF, DKIM ve DMARC kayıtları; alan adı Cloudflare DNS'inde ise tek tık ekleme seçeneği
    Aynı ekran doğrulama tamamlandıktan sonra — yeşil/doğrulandı durumu

    Adım 2 — Binding’i tanımla ve gönder

    npx wrangler deploy
    curl -X POST https://<worker>/gonder \
      -H 'content-type: application/json' \
      -d '{"eposta":"test@ornek.com","kod":"123456"}'
    curl çıktısı — başarılı gönderim yanıtı ve varsa mesaj kimliği
    E-posta istemcisinde alınan mesaj — gönderen adı, konu ve içerik görünsün

    Adım 3 — Teslim edilebilirlik başlıklarını incele

    Gelen e-postanın kaynağını aç ve Authentication-Results başlığına bak.

    Ham e-posta başlıkları — Authentication-Results satırında spf=pass, dkim=pass, dmarc=pass görünsün

    Adım 4 — Panelde kullanımı izle

    Email Sending kullanım ekranı — aylık gönderim sayısı, 3.000'lik kotaya oranı ve varsa bounce sayısı

    Demo 2: Gelen e-postayı işleyen akış

    Adım 1 — Email Routing kuralı kur

    Email → Email Routing → kural listesi; bir adresin Worker'a yönlendirildiği kural

    Adım 2 — Worker’ın email handler’ını çalıştır

    wrangler tail çıktısı — email handler'ının tetiklendiği, gönderen ve konu bilgisinin loglandığı

    Adım 3 — Otomatik yanıtı doğrula

    Gönderilen test mesajına gelen otomatik yanıt — Re: konu başlığıyla

    Adım 4 — Sınırları test et

    51 alıcılı bir mesaj göndermeyi dene.

    API yanıtı — alıcı sayısı sınırı hatası ve tam hata metni

    Ölçüm

    ÖlçütDeğer
    SPF / DKIM / DMARC sonucu
    Gönderimden gelen kutusuna süre
    Doğrulanmış adrese gönderim kotayı tüketti mi
    50 alıcı sınırında dönen hata
    Spam klasörüne düştü mü

    Fiyatlandırma

    Rakamlar 31 Ağustos 2026’da resmî dokümandan doğrulanmıştır.

    Workers FreeWorkers Paid
    Giden e-postaKullanılamazAyda 3.000 dahil, sonrası 1.000 e-posta başına 0,35 USD
    Gelen e-posta (Email Routing)SınırsızSınırsız
    Doğrulanmış hedeflere gönderimÜcretsiz, kotaya sayılmazÜcretsiz, kotaya sayılmaz

    Dahil kota abonelik faturalama döngüsüne göre hesap başına uygulanır. Reddedilen API gönderimleri — bastırma listesine takılanlar dahil — kotaya sayılmaz.

    Limitler

    SınırDeğer
    Alıcı sayısı50 (to + cc + bcc toplamı)
    Konu satırı998 karakter
    Mesaj boyutu5 MiB (doğrulanmış hedeflere 25 MiB)
    Gelen mesaj boyutu25 MiB
    Özel başlıklar toplamı16 KB
    Zone başına alan adı30 (Routing + Sending ortak)
    Alan adı başına yönlendirme kuralı200
    Hesap başına doğrulanmış hedef adres200

    Lisanslama ve hukuki çerçeve

    Email Service tescilli bir hizmettir; Cloudflare Hizmet Şartları ve Kabul Edilebilir Kullanım Politikası kapsamındadır. İstenmeyen e-posta gönderimi politikaya aykırıdır.

    Türkiye’ye özgü yükümlülük — İYS. Bu, e-posta gönderiminde Türkiye’de en çok gözden kaçan konudur ve Cloudflare bunu sağlamaz:

    • İşlemsel e-posta (şifre sıfırlama, sipariş onayı, fatura) — kullanıcının kendi eylemine yanıt olarak gönderilir, ticari ileti sayılmaz.
    • Ticari elektronik ileti (kampanya, bülten, tanıtım) — Türkiye’de İleti Yönetim Sistemi (İYS) kaydı, onay yönetimi ve ret hakkı sunma yükümlülüğü doğurur.

    Bu ürün işlemsel e-posta için tasarlanmıştır. Ticari ileti gönderecekseniz İYS uyumluluğunu ayrıca çözmeniz gerekir.

    Veri işleme. Gönderdiğiniz e-postaların içeriği ve alıcı adresleri Cloudflare üzerinden geçer. Kişisel veri içeriyorsa Veri İşleme Ek Sözleşmesi ve alt işleyici listesi incelenmelidir.

    Sık yapılan hatalar

    Ücretsiz planda gönderim beklemek. Giden e-posta Workers Paid gerektirir; ücretsiz planda yalnızca doğrulanmış hedeflere gönderim çalışır.

    DNS kayıtlarını eksik bırakmak. SPF, DKIM veya DMARC eksikse mesajlar spam klasörüne düşer veya hiç teslim edilmez. Gönderim öncesi Authentication-Results başlığını mutlaka kontrol et.

    50 alıcı sınırını fark etmemek. to, cc ve bcc toplamı 50’yi geçemez. Toplu bildirimde kuyruk kullan.

    Büyük dosyaları ek olarak göndermek. 5 MiB sınırı düşüktür. Dosyayı R2’ye koyup imzalı bağlantı göndermek hem sınırı aşar hem teslim edilebilirliği artırır.

    Bounce’ları yönetmemek. Kalıcı olarak bounce eden adreslere göndermeye devam etmek gönderim itibarını düşürür ve kotayı boşa harcar.

    Beta ürünü kritik yolda tek başına kullanmak. Şifre sıfırlama gibi akışlarda yedek sağlayıcı düşünün.

    İşlemsel ile ticari iletiyi karıştırmak. Türkiye’de ikincisi İYS yükümlülüğü doğurur ve bu ürün onu çözmez.

    Sıkça sorulan sorular

    Email Service GA mi?
    İkiye ayırmak gerekiyor. Email Routing (gelen e-posta) genel kullanımda ve hem ücretsiz hem ücretli planlarda var. Email Sending (giden işlemsel e-posta) ise “Beta for outbound transactional emails” olarak işaretli ve Workers Paid planı gerektiriyor. Yani gelen taraf olgun, giden taraf beta.
    Ücretsiz planda e-posta gönderebilir miyim?
    Hayır. Giden e-posta için resmî fiyat tablosunda Workers Free planı karşısında “Not available” yazıyor. Tek istisna var ve önemli: “Sends to verified destination addresses are free and do not count toward the included quota.” Yani hesabındaki doğrulanmış adreslere gönderim her planda ücretsizdir — kendine bildirim göndermek gibi senaryolar için bu yeterli olabilir.
    Kaç e-posta gönderebilirim, ne kadara?
    Workers Paid planında ayda 3.000 e-posta dahil, sonrası 1.000 e-posta başına 0,35 USD. Gelen e-posta (Email Routing) her iki planda da sınırsız ve ücretsiz. Reddedilen API gönderimleri — bastırma listesine takılanlar dahil — kotaya sayılmaz.
    Günlük gönderim sınırım ne?
    Resmî dokümantasyon sabit bir günlük kota yayımlamıyor. Bunun yerine şu yaklaşımı anlatıyor: “start with a conservative daily quota and scale up.” Yani hesabın muhafazakâr bir kotayla başlar ve gönderim itibarın oluştukça artar. Daha yüksek kota için Cloudflare’in limit artırma formu var. Toplu gönderim planlıyorsan bunu önceden hesaba kat.
    Üç erişim yolundan hangisini seçmeliyim?
    Workers binding (env.EMAIL.send()) — Worker içinden gönderiyorsan; en az gecikme, ek kimlik bilgisi yok. REST API (POST /accounts/{account_id}/email/sending/send) — Cloudflare dışından, kendi sunucundan veya başka bir dilde yazılmış bir uygulamadan. SMTP (smtps://smtp.mx.cloudflare.net:465) — mevcut bir uygulamanın SMTP ayarlarını değiştirmekten başka bir şey yapamıyorsan. Yeni kod yazıyorsan binding veya REST API tercih et.
    Bir e-postada kaç alıcı olabilir?
    50 — ve bu sayı to, cc ve bcc alanlarının toplamıdır. Daha fazla alıcıya ulaşman gerekiyorsa e-postayı bölmen ve muhtemelen bir kuyruk kullanman gerekir.
    Mesaj boyutu sınırı nedir?
    Standart gönderimde 5 MiB. Doğrulanmış hedef adreslere gönderimde 25 MiB. Gelen e-postada da 25 MiB. Konu satırı en fazla 998 karakter, tüm özel başlıklar toplamı en fazla 16 KB. Büyük ekler için dosyayı R2'ye koyup bağlantı göndermek daha sağlıklıdır.
    Teslim edilebilirlik için ne yapmam gerekiyor?
    Gönderim yapacağın alan adının Cloudflare’de doğrulanması gerekir. Genel olarak işlemsel e-posta teslim edilebilirliği üç DNS kaydına dayanır: SPF (hangi sunucular senin adına gönderebilir), DKIM (mesajın imzalanması) ve DMARC (ikisi başarısız olursa ne yapılacağı). Cloudflare kurulum sırasında gereken kayıtları panelde gösterir. Kurulum adımlarını demo bölümünde birlikte yapacağız.
    Türkiye'den gönderimde ek bir sorun var mı?
    Teknik olarak fark yok — teslim edilebilirlik alan adının itibarına ve DNS kayıtlarının doğruluğuna bağlıdır, gönderenin ülkesine değil. Ancak ticari elektronik ileti gönderiyorsan Türkiye'de İYS (İleti Yönetim Sistemi) kaydı ve onay yönetimi ayrı bir yükümlülüktür ve Cloudflare bunu sağlamaz. İşlemsel e-posta (şifre sıfırlama, sipariş onayı) ile ticari ileti (kampanya, bülten) arasındaki ayrım burada kritiktir.
    Email Routing ile Email Sending aynı ürün mü?
    Aynı çatı altında iki ayrı yetenek. Email Routing alan adına gelen e-postayı mevcut kutuna yönlendirir — ücretsiz, sınırsız, genel kullanımda. Email Sending uygulamandan e-posta gönderir — beta, ücretli. İkisi birlikte kullanıldığında uygulaman çift yönlü e-posta yapabilir: gelen mesajı bir Worker işler, yanıtı yine Worker gönderir.
    Bir alan adında kaç yapılandırma olabilir?
    Zone başına 30 alan adı — Email Routing ve Email Sending için ortak toplam. Ayrıca alan adı başına 200 yönlendirme kuralı ve hesap başına 200 doğrulanmış hedef adres.
    Bounce ve şikâyetleri nasıl yönetiyorum?
    Cloudflare bir bastırma listesi tutuyor ve bu listeye takılan gönderimler kotana sayılmıyor. Bu, itibarını koruyan otomatik bir mekanizma. Yine de kendi tarafında kalıcı bounce alan adresleri işaretlemek ve tekrar denememek iyi bir alışkanlıktır — özellikle 3.000'lik aylık kotayı boşa harcamamak için.
    Beta olması ne anlama geliyor, üretimde kullanmalı mıyım?
    Beta etiketi API'nin değişebileceği ve SLA taahhüdü olmadığı anlamına gelir. Şifre sıfırlama veya sipariş onayı gibi kritik işlemsel e-postalar için tek gönderim yolunuz bu olmamalı; en azından bir yedek sağlayıcı düşünün. Düşük riskli bildirimler ve iç araçlar için beta yeterlidir.

    İlgili servisler

    • WorkersJavaScript/TypeScript/Python kodunu Cloudflare’in 330+ şehirdeki sunucularında, sunucu yönetmeden çalıştırır.
    • Email RoutingAlan adındaki e-posta adreslerini ücretsiz olarak mevcut kutuna yönlendirir. Artık Cloudflare Email Service’in içinde.
    • Queuesİşleri kuyruğa alıp arka planda batch ve garantili biçimde işler.
    • WorkflowsSaatler veya günler süren çok adımlı işleri, adım bazında kalıcı state ve otomatik retry ile yürütür.
    • R2S3 uyumlu object storage — çıkış (egress) trafiği ücretsiz.

    Bu sayfadaki fiyat ve özellik bilgileri 31 Ağustos 2026 tarihinde Cloudflare’in resmî kaynaklarından doğrulanmıştır. Cloudflare fiyatlandırmasını önceden haber vermeden değiştirebilir; bağlayıcı bilgi içinresmî sayfaya bakın.

    Hata bildir

    Yanlış bir rakam, eskimiş bir bilgi veya bozuk bir bağlantı mı buldun? Bildir, kaynağıyla birlikte kontrol edelim.