Ana içeriğe geç
MailLand

Geçiş rehberi

Postmark'tan Mail.Land'e geçiş

Postmark ve Mail.Land'in ikisi de JSON gönderim çağrısı alır; bu yüzden çoğu alan birebir eşlenir. Bu rehber her yaygın alanı, SMTP için değiştirilecek ayarları ve kod değişikliği gerektiren farkları listeler.

SMTP
# Before (Postmark)
SMTP_HOST=smtp.postmarkapp.com   # broadcasts: smtp-broadcasts.postmarkapp.com
SMTP_PORT=587                    # STARTTLS
SMTP_USER=<Server API token, or SMTP token access key>
SMTP_PASS=<Server API token, or SMTP token secret key>

# After (Mail.Land)
SMTP_HOST=smtp.mail.land
SMTP_PORT=587          # STARTTLS
SMTP_USER=apikey       # any value; Mail.Land ignores it
SMTP_PASS=ml_pet_...   # transactional; use an ml_pem_ key for broadcasts

Mail.Land'de Postmark kavramları

Mail.Land'de Postmark kavramları
PostmarkMail.Land
Server ve Server API tokenÇalışma alanı ve her biri API veya SMTP ile, alan adlarıyla ve IP adresleriyle sınırlandırılabilen API anahtarları (kimlik bilgileri)
Mesaj akışları (işlemsel, toplu)Anahtarın akışı: işlemsel (ml_pet_) veya pazarlama (ml_pem_)
Gönderici imzaları ve alan adlarıDoğrulanmış alan adı (SPF, DKIM, DMARC ve dönüş yolu)
Şablonlar ve düzenler (Mustachio){{name}} yer tutuculu şablonlar
Mesaj akışı başına engelleme listeleriTürü ve kapsamı olan engelleme listeleri
Webhook'larHMAC-SHA256 ile imzalanan, webhook başına ayrı gizli anahtarlı webhook'lar
Gelen akışıGelen yönlendirmeleri

Doğru API anahtarlarını oluşturun

Postmark'ta akışı MessageStream alanı veya başlığı seçer. Mail.Land'de bunu anahtar yapar: ön eki modunu ve akışını gösterir. Her uygulama ve akış için bir anahtar oluşturun.

Doğru API anahtarlarını oluşturun
Ön ekNe için
ml_pet_Üretim, işlemsel: makbuzlar, parola sıfırlama, uyarılar. İstek başına en fazla 5 alıcı.
ml_pem_Üretim, pazarlama: send-batch ile bültenler ve toplu gönderimler, çağrı başına en fazla 10.000 alıcı.
ml_set_Sandbox, işlemsel: sandboxBehavior LogOnly (varsayılan) iken istekler kabul edilir ve kaydedilir ama hiçbir zaman teslim edilmez. Entegrasyon testleriniz için kullanın.

Her anahtar API'ye, SMTP'ye veya ikisine, seçili alan adlarına ve bilinen IP adreslerine sınırlandırılabilir. Anahtar bir kez gösterilir; Mail.Land yalnızca karmasını (hash) saklar.

API anahtarları belgeleri

SMTP'yi değiştirin: sunucuyu ve kimlik bilgilerini güncelleyin

Postmark bir Server API token veya SMTP token ile akışı seçmek için bir başlık kullanır. Mail.Land ise API anahtarınızı parola olarak kullanır, kullanıcı adını yok sayar ve akışı anahtardan alır.

SMTP'yi değiştirin: sunucuyu ve kimlik bilgilerini güncelleyin
AyarPostmarkMail.Land
Sunucusmtp.postmarkapp.com veya toplu gönderimler için smtp-broadcasts.postmarkapp.comsmtp.mail.land
PortSTARTTLS ile 25, 587 veya 2525STARTTLS ile 587
Kullanıcı adıServer API token veya SMTP token'ın access key'iHerhangi bir değer, örneğin apikey
ParolaServer API token veya SMTP token'ın secret key'iSMTP'si etkin bir Mail.Land API anahtarı
AkışX-PM-Message-Stream başlığıAnahtar: işlemsel için ml_pet_, pazarlama için ml_pem_

Mail.Land oturum açmayı yalnızca STARTTLS'ten sonra kabul eder. Mail.Land, X-PM-Message-Stream başlığını dikkate almaz: akışı anahtar belirler. Mesajlar 15 MiB'a kadar olabilir.

SMTP rölesi belgeleri

API çağrısını değiştirin

Her iki API de JSON alır. Postmark PascalCase adlar ve X-Postmark-Server-Token başlığı, Mail.Land ise camelCase adlar ve X-API-Key başlığı kullanır. İşte ikisinde de aynı mesaj ve şablonlu bir gönderim.

curl -X POST https://api.postmarkapp.com/email \
  -H "X-Postmark-Server-Token: $POSTMARK_SERVER_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "From": "Your Shop <[email protected]>",
    "To": "[email protected]",
    "ReplyTo": "[email protected]",
    "Subject": "Order 12345 has shipped",
    "TextBody": "Your order is on its way.",
    "HtmlBody": "<p>Your order is on its way.</p>",
    "Tag": "order-shipped",
    "MessageStream": "outbound"
  }'
curl -X POST https://api.mail.land/v1/transactional/send \
  -H "X-API-Key: $MAILLAND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": { "email": "[email protected]", "name": "Your Shop" },
    "to": [{
      "email": "[email protected]", "name": "Jane",
      "variables": { "orderNumber": "12345" }
    }],
    "replyTo": "[email protected]",
    "subject": "Order {{orderNumber}} has shipped",
    "textContent": "Your order {{orderNumber}} is on its way.",
    "htmlContent": "<p>Your order {{orderNumber}} is on its way.</p>",
    "tags": ["order-shipped"]
  }'
# MAILLAND_API_KEY=ml_pet_...  (production, transactional)

Gönderim çağrısı için alan eşlemesi

POST /email ve /email/withTemplate'ten POST /v1/transactional/send'e.

Gönderim çağrısı için alan eşlemesi
PostmarkMail.LandNot
X-Postmark-Server-Token: <token>X-API-Key: <key>Farklı bir başlık.
Fromfrom.email, from.nameGörünen adı adresten ayırın. Adres doğrulanmış bir alan adında olmalıdır.
Toto[].email, to[].nameVirgülle ayrılmış dize yerine nesnelerden oluşan bir dizi. İşlemsel anahtarla istek başına en fazla 5 alıcı; her biri ayrı bir kopya alır.
Cc, BccYokDesteklenmez. Her alıcıya ayrı bir mesaj gönderin.
SubjectsubjectŞablon kullanmıyorsanız zorunludur.
HtmlBodyhtmlContent
TextBodytextContent
ReplyToreplyToTek bir adres dizesi. Virgülle ayrılmış birden çok reply-to adresi kullandıysanız birini tutun.
TagtagsBir dizi; böylece bir mesaj birden çok etiket taşıyabilir.
MetadataYokAnahtar-değer meta veri alanı yoktur. tags veya özel bir başlık kullanın.
Headers [{ Name, Value }]customHeadersDizi yerine başlık adları ve değerlerinden oluşan bir nesne.
TrackOpenstracking.opensAlan adının açılma izleme tercihi önceliklidir.
TrackLinkstracking.clicksNone, HtmlAndText, HtmlOnly veya TextOnly yerine bir boolean değer.
Attachments[].Name, Content, ContentType, ContentIDattachments[].fileName, content, contentType, contentId, inlineBase64 içerik önceki gibi. Satır içi görsel için inline: true ayarlayın. En fazla 10 ek ve toplam 10 MiB.
MessageStreamYokAkışı anahtar belirler: ml_pet_ veya ml_pem_.
TemplateId, TemplateAliastemplateIdÖnce şablonu Mail.Land'de yeniden oluşturun; yeni bir kimlik alır.
TemplateModelvariables, to[].variablesYalnızca düz değerler; çünkü yer tutucularda bölüm veya döngü yoktur.
POST /email/batch (en fazla 500 mesaj)POST /v1/transactional/send-batchFarklı bir model: her biri kendi değişkenlerine sahip en fazla 10.000 alıcı için ortak içerik, pazarlama anahtarıyla gönderilir. Farklı mesajlar için her biri için ayrı bir gönderim çağrısı yapın.
Karşılığı yokscheduledAtBir mesajı 7 güne kadar ileriye zamanlayın.
Karşılığı yokX-Idempotency-Key başlığıSaklama süresi içinde aynı anahtarla yapılan yeniden deneme, yeniden göndermek yerine özgün yanıtı döndürür.

Mail.Land; bir jobId, kabul edilen her alıcı için bir mesaj kimliği ve kabul edilen ile reddedilen alıcıların listeleriyle 202 Accepted yanıtı verir.

REST API belgeleri

Alan adınızı ve DNS kayıtlarını ekleyin

Alan adını Mail.Land'e ekleyin ve panelin gösterdiği kayıtları yayımlayın. Gönderebilmek için SPF, DKIM ve DMARC'nin doğrulanması gerekir. Bunu Postmark hâlâ gönderim yaparken yapabilirsiniz.

Alan adınızı ve DNS kayıtlarını ekleyin
KayıtAdDeğerNot
SPF (TXT)yourdomain.cominclude:spf.mlnd.netinclude'u mevcut SPF kaydınıza ekleyin. Bir alan adının yalnızca bir SPF kaydı olmalıdır.
DKIM (TXT)mlnd._domainkey.yourdomain.comv=DKIM1; k=rsa; p=...Seçici (selector) mlnd olduğundan kayıt, Postmark'ın DKIM kaydının yanında durur.
DMARC (TXT)_dmarc.yourdomain.comv=DMARC1; p=...Zorunludur. Tek bir DMARC kaydı tutun; politikası olan mevcut bir kayıt yeterlidir.
Dönüş yolu (CNAME)bounce.yourdomain.combounce.mlnd.netDNS only olarak, proxy olmadan ayarlayın. Bu adın zaten kullanılmadığını kontrol edin.

Postmark'ın DNS kayıtlarını taşıma bitene kadar koruyun ve yalnızca son mesajı gittikten sonra kaldırın.

DNS kurulumu belgeleri

Önce engelleme listelerinizi aktarın

Postmark engelleme listelerini her mesaj akışı için ayrı tutar. Her akışın listesini, örneğin GET /message-streams/<stream>/suppressions/dump ile dışa aktarın, ardından uygun tür ve kapsamla, panelde veya POST /v1/transactional/suppressions/import ile Mail.Land'e aktarın.

Önce engelleme listelerinizi aktarın
Postmark nedeniMail.Land türüKapsam
HardBounceHardBounceGlobal
SpamComplaintComplaintGlobal
Toplu akıştaki ManualSuppression (abonelik iptalleri)UnsubscribeMarketing; ya da yalnızca eşleşen Mail.Land posta listesine gönderilen kampanyalara uygulanan List
İşlemsel akıştaki ManualSuppressionManualTransactional

Mail.Land üzerinden ilk gönderimden önce aktarın; böylece aboneliğini iptal edenler baştan engelli kalır. Zaten var olan adresler atlanır, çoğaltılmaz.

Engelleme listesi belgeleri

Webhook'larınızı Mail.Land'e yönlendirin

Uç noktanızı Mail.Land'e ekleyin, olayları seçin ve X-MLND-Signature başlığını o webhook'un gizli anahtarıyla doğrulayın. Postmark uç noktanızı Basic kimlik doğrulaması veya IP izin listesiyle koruyorduysanız bunun yerine imzayı doğrulayın.

Webhook'larınızı Mail.Land'e yönlendirin
Postmark webhook'uMail.Land olayıNot
Teslimat (Delivery)message.delivered
Geri dönme (Bounce)message.bouncedKalıcı ve geçici geri dönmeleri kapsar. Geçici gecikmeler message.deferred'dır.
Spam şikâyeti (Spam complaint)message.complained
Abonelik değişikliği (Subscription change)message.unsubscribedAlıcının kendi abonelik iptali için gönderilir; API üzerinden yaptığınız değişiklikler için gönderilmez.
Açılma, tıklama (Open, Click)Henüz yokAçılma ve tıklama olayları katalogda yer alır ama bugün gönderilmez.
Gelen (Inbound)inbound.receivedAlıcı adres için bir gelen yönlendirmesi kurun.
SMTP API hatasıYokSMTP rölesi mesajı oturum sırasında bir yanıt koduyla reddeder.

event_id'ye göre yinelenenleri ayıklayın; yeniden denenen teslimat aynı olay kimliğini taşır. Bir durum sonradan düzeltilebilir; bu yüzden son bir olaydan sonra da olayları işlemeye devam edin ve status_version'ı karşılaştırın.

Webhook olayları

Webhook imzası doğrulama

Şablonlarınızı yeniden oluşturun

Her şablonu Mail.Land panelinde veya şablon API'siyle oluşturun, ardından templateId ve variables ile gönderin. Her yer tutucunun bir değeri olmalıdır; yoksa gönderim 422 koduyla ve eksik adlarla reddedilir.

Şablonlarınızı yeniden oluşturun
PostmarkMail.Land
{{firstName}}{{firstName}}
{{#each items}} ... {{/each}}Yok
{{#section}}, {{^section}}Yok
Düzen (layout) şablonlarıYok

Mail.Land yer tutucuları sadedir: bölüm, döngü veya düzen yoktur. Düz değerler geçirin, listeleri uygulamanızda oluşturun ve ortak üst bilgi ile alt bilgi HTML'sini her şablonda tekrarlayın.

Şablon belgeleri

Adım adım geçiş

  1. Gönderim alan adınızı Mail.Land'e ekleyip doğrulayın ve include:spf.mlnd.net'i mevcut SPF kaydınıza ekleyin.
  2. Her Postmark mesaj akışının engelleme listesini dışa aktarıp içe aktarın.
  3. Her uygulama için bir işlemsel anahtar, toplu gönderim yapıyorsanız bir de pazarlama anahtarı oluşturun.
  4. Şablonlarınızı ve webhook'larınızı yeniden oluşturun.
  5. sandboxBehavior LogOnly olan bir sandbox anahtarı oluşturun ve entegrasyon testlerinizi e-posta teslim etmeden Mail.Land'e karşı çalıştırın.
  6. Denetiminizdeki adreslere gerçek mesajlar gönderin ve e-posta günlüğünde kontrol edin.
  7. Bir uygulamayı veya trafiğin küçük bir bölümünü taşıyın, ardından teslimatı, geri dönmeleri ve şikâyetleri izleyin.
  8. İki sağlayıcı birlikte çalışırken abonelik iptallerini iki yönde senkron tutun: yeni abonelik iptallerini, şikâyetleri ve geri dönmeleri Postmark'tan Mail.Land'e ve Mail.Land'den Postmark'a kopyalayın; kalan trafiği taşımadan önce son bir senkronizasyon yapın.
  9. Alan adınızın ısınma sürecini kontrol edin: Free ve Pro'da yeni bir alan adının aşamalarla artan bir günlük sınırı vardır ve bu sınırı aşan gönderimler reddedilir. Geçişi bu sınırlar içinde planlayın veya bize özel bir takvim sorun. Max'te ısınma aşaması yoktur.
  10. Ardından kalanını taşıyın ve Postmark'ı son mesajları gidene kadar etkin tutun.

Mail.Land ile Postmark: kaynaklı karşılaştırma

Kaynaklar

Bu rehberde kullanılan Postmark'ın herkese açık sayfaları.

  1. [1]Postmark Email APIhttps://postmarkapp.com/developer/api/email-api4 Kasım 2026 tarihinde kontrol edildi
  2. [2]Postmark Templates APIhttps://postmarkapp.com/developer/api/templates-api4 Kasım 2026 tarihinde kontrol edildi
  3. [3]Postmark: SMTP ile e-posta göndermehttps://postmarkapp.com/developer/user-guide/send-email-with-smtp4 Kasım 2026 tarihinde kontrol edildi
  4. [4]Postmark webhook'larına genel bakışhttps://postmarkapp.com/developer/webhooks/webhooks-overview4 Kasım 2026 tarihinde kontrol edildi
  5. [5]Postmark Suppressions APIhttps://postmarkapp.com/developer/api/suppressions-api4 Kasım 2026 tarihinde kontrol edildi

Sık sorulan sorular

Test ederken Postmark üzerinden göndermeye devam edebilir miyim?

Evet. Bir alan adını Mail.Land'de doğrulamak, Postmark'ın o alan adı için göndermesini durdurmaz; ikisini birlikte çalıştırıp trafiği kademeli olarak taşıyabilirsiniz.

Mail.Land cc ve bcc'yi destekliyor mu?

Gönderim çağrısında hayır. Her alıcı ayrı bir kopya alır; bu yüzden cc veya bcc kullandığınız yerlerde ayrı bir mesaj gönderin.

Toplu gönderim akışımı nasıl değiştiririm?

API ile gönderimler için send-batch ile bir pazarlama anahtarı (ml_pem_) kullanın veya Pro ya da Max planında panelde bir kampanya oluşturun.

Resmi bir Mail.Land SDK'sı var mı?

Henüz yok. Belgelerde REST API için cURL, Node.js, Python, PHP, C#, Java ve Go'da kopyalanmaya hazır örnekler var ve her SMTP kütüphanesi röleyle çalışır.

Postmark'tan geçmeye hazır mısınız?

Ücretsiz bir hesap oluşturun ve ilk testinizi bugün gönderin. Yardım isterseniz kurulumunuzu bize anlatın.