Geçiş rehberi
Mailgun'dan Mail.Land'e geçiş
SMTP ile gönderiyorsanız değişiklik bir sunucu adı ve bir paroladan ibarettir. messages API'sini kullanıyorsanız bu rehber her yaygın Mailgun alanını Mail.Land ile eşler ve kod değişikliği gerektirenleri listeler.
# Before (Mailgun)
SMTP_HOST=smtp.mailgun.org
SMTP_PORT=587 # STARTTLS
SMTP_USER=<SMTP login of your sending domain>
SMTP_PASS=<SMTP password of that login>
# 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_... # a Mail.Land key with SMTP enabledMail.Land'de Mailgun kavramları
| Mailgun | Mail.Land |
|---|---|
| Gönderim alan adı | Doğrulanmış alan adı (SPF, DKIM, DMARC ve dönüş yolu) |
| API anahtarı ve alan adı gönderim anahtarları | Her biri API veya SMTP ile, alan adlarıyla ve IP adresleriyle sınırlandırılabilen API anahtarları (kimlik bilgileri) |
| Alan adı başına SMTP kimlik bilgileri | SMTP parolası olarak kullanılan aynı API anahtarı |
| Şablonlar (Handlebars) | {{name}} yer tutuculu şablonlar |
| Geri dönme, şikâyet ve abonelik iptali listeleri | Türü ve kapsamı olan engelleme listeleri |
| Webhook'lar | HMAC-SHA256 ile imzalanan, webhook başına ayrı gizli anahtarlı webhook'lar |
| Yönlendirmeler (Routes) | Gelen yönlendirmeleri |
Doğru API anahtarlarını oluşturun
Bir Mail.Land anahtarının ön eki, modunu ve akışını gösterir. Her uygulama ve akış için bir anahtar oluşturun, üretim anahtarlarını test sistemlerinizden uzak tutun.
| Ön ek | Ne 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.
SMTP'yi değiştirin: sunucuyu ve parolayı güncelleyin
Mailgun, gönderim alan adı başına bir SMTP oturum adı kullanır. Mail.Land ise API anahtarınızı parola olarak kullanır ve kullanıcı adını yok sayar.
| Ayar | Mailgun | Mail.Land |
|---|---|---|
| Sunucu | smtp.mailgun.org | smtp.mail.land |
| Port | STARTTLS ile 25, 587 veya 2525 ya da TLS ile 465 | STARTTLS ile 587 |
| Kullanıcı adı | Gönderim alan adınızın SMTP oturum adı | Herhangi bir değer, örneğin apikey |
| Parola | O SMTP oturum adının parolası | SMTP'si etkin bir Mail.Land API anahtarı (işlemsel e-posta için ml_pet_) |
Mail.Land oturum açmayı yalnızca STARTTLS'ten sonra kabul eder ve 465 portu sunulmaz. Uygulamanız 465 kullanıyorsa STARTTLS ile 587'ye geçirin. Mesajlar 15 MiB'a kadar olabilir.
API çağrısını değiştirin
Mailgun, HTTP Basic kimlik doğrulamasıyla form alanları alır. Mail.Land, X-API-Key başlığıyla bir JSON gövdesi alır. İşte her iki API'de aynı mesaj ve bir toplu gönderim.
curl -s --user "api:$MAILGUN_API_KEY" \
https://api.mailgun.net/v3/yourdomain.com/messages \
-F from="Your Shop <[email protected]>" \
-F to="Jane <[email protected]>" \
-F subject="Order 12345 has shipped" \
-F text="Your order is on its way." \
-F html="<p>Your order is on its way.</p>" \
-F h:Reply-To="[email protected]" \
-F o:tag="order-shipped"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 /v3/<domain>/messages'tan POST /v1/transactional/send'e.
| Mailgun | Mail.Land | Not |
|---|---|---|
--user api:<key> (Basic kimlik doğrulaması) | X-API-Key: <key> | Basic kimlik doğrulaması yerine bir başlık, form alanları yerine JSON gövdesi. |
from | from.email, from.name | Görünen adı adresten ayırın. Adres doğrulanmış bir alan adında olmalıdır. |
to | to[].email, to[].name | İşlemsel anahtarla istek başına en fazla 5 alıcı; her biri ayrı bir kopya alır. |
cc, bcc | Yok | Desteklenmez. Her alıcıya ayrı bir mesaj gönderin. |
subject | subject | Şablon kullanmıyorsanız zorunludur. |
text | textContent | |
html | htmlContent | |
amp-html | Yok | AMP bölümü yoktur. |
template, t:version | templateId | Önce şablonu Mail.Land'de yeniden oluşturun. Şablonların sürümü yoktur. |
t:variables | variables | Tüm alıcılar için ortak değerler; JSON dizesi yerine JSON nesnesi olarak. |
v:<name> (metadata) | tags | Mail.Land'de olaylarda anahtar-değer meta verisi yoktur. Bir tanımlayıcıyı tags içinde veya özel bir başlıkta taşıyın. |
recipient-variables | to[].variables | Alıcı başına değerler. 5'ten fazla alıcı için pazarlama anahtarıyla send-batch ve recipients[].variables kullanın. |
o:tag | tags | Dizelerden oluşan bir dizi. |
h:<Header-Name> | customHeaders | Başlık adları ve değerlerinden oluşan bir nesne. |
h:Reply-To | replyTo | Sade bir adres dizesi. |
attachment, inline | attachments[].fileName, contentType, content, contentId, inline | Multipart dosyalar yerine JSON içinde Base64 içerik. En fazla 10 ek ve toplam 10 MiB. |
o:deliverytime | scheduledAt | ISO 8601 biçiminde UTC tarih ve saat, 7 güne kadar ileri. |
o:tracking-opens, o:tracking-clicks | tracking.opens, tracking.clicks | Boolean değerler. Alan adının açılma izleme tercihi önceliklidir. |
Karşılığı yok | X-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.
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 Mailgun hâlâ gönderim yaparken yapabilirsiniz.
| Kayıt | Ad | Değer | Not |
|---|---|---|---|
| SPF (TXT) | yourdomain.com | include:spf.mlnd.net | include'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.com | v=DKIM1; k=rsa; p=... | Seçici (selector) mlnd olduğundan kayıt, Mailgun'ın DKIM kaydının yanında durur. |
| DMARC (TXT) | _dmarc.yourdomain.com | v=DMARC1; p=... | Zorunludur. Tek bir DMARC kaydı tutun; politikası olan mevcut bir kayıt yeterlidir. |
| Dönüş yolu (CNAME) | bounce.yourdomain.com | bounce.mlnd.net | DNS only olarak, proxy olmadan ayarlayın. Bu adın zaten kullanılmadığını kontrol edin. |
Mailgun'ın DNS kayıtlarını taşıma bitene kadar koruyun ve yalnızca son mesajı gittikten sonra kaldırın.
Önce engelleme listelerinizi aktarın
Mailgun geri dönmeleri, şikâyetleri ve abonelik iptallerini her gönderim alan adı için ayrı tutar; bu nedenle gönderim yaptığınız her alan adının listelerini, örneğin GET /v3/<domain>/bounces ile dışa aktarın. Ardından her listeyi uygun tür ve kapsamla, panelde veya POST /v1/transactional/suppressions/import ile Mail.Land'e aktarın.
| Mailgun listesi | Mail.Land türü | Kapsam |
|---|---|---|
| Geri dönmeler (Bounces) | HardBounce | Global |
| Şikâyetler (Complaints) | Complaint | Global |
| Abonelik iptalleri (tüm e-postalar) | Unsubscribe | Global |
| Bir etiket veya posta listesi için abonelik iptalleri | Unsubscribe | Marketing; ya da yalnızca eşleşen Mail.Land posta listesine gönderilen kampanyalara uygulanan List |
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.
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ı doğrulayın. Mailgun bir zaman damgasını ve belirteci hesap genelindeki tek bir anahtarla imzalar; Mail.Land ise zaman damgasını ve ham gövdeyi webhook başına bir gizli anahtarla imzalar. Bu nedenle doğrulama kodunuzu da güncelleyin.
| Mailgun olayı | Mail.Land olayı | Not |
|---|---|---|
accepted | Şimdilik yok | message.sent henüz kullanılamıyor; 202 yanıtı kabulü doğrular. |
delivered | message.delivered | |
temporary_fail | message.deferred | |
permanent_fail | message.bounced | Alıcı sunucunun reddi. message.failed ise Mail.Land tarafındaki bir durdurmayı bildirir. |
complained | message.complained | |
unsubscribed | message.unsubscribed | Alıcının kendi abonelik iptali için gönderilir; API üzerinden yaptığınız değişiklikler için gönderilmez. |
opened, clicked | Henüz yok | Açılma ve tıklama olayları katalogda yer alır ama bugün gönderilmez. |
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.
Ş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.
| Mailgun | Mail.Land |
|---|---|
{{firstName}} | {{firstName}} |
%recipient.firstName% | {{firstName}} |
{{#if}}, {{#unless}}, {{#each}}, {{#with}}, {{#equal}} | Yok |
Şablon sürümleri (t:version) | Yok |
Mail.Land yer tutucuları sadedir: koşul, döngü, filtre veya partial yoktur. Bu mantığı uygulamanıza taşıyın veya her varyant için bir şablon tutun.
Adım adım geçiş
- 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.
- Her Mailgun alan adının engelleme listelerini dışa aktarıp içe aktarın.
- Şablonlarınızı ve webhook'larınızı yeniden oluşturun.
- sandboxBehavior LogOnly olan bir sandbox anahtarı oluşturun ve entegrasyon testlerinizi e-posta teslim etmeden Mail.Land'e karşı çalıştırın.
- Denetiminizdeki adreslere gerçek mesajlar gönderin ve e-posta günlüğünde kontrol edin.
- 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.
- İki sağlayıcı birlikte çalışırken abonelik iptallerini iki yönde senkron tutun: yeni abonelik iptallerini, şikâyetleri ve geri dönmeleri Mailgun'dan Mail.Land'e ve Mail.Land'den Mailgun'a kopyalayın; kalan trafiği taşımadan önce son bir senkronizasyon yapın.
- 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.
- Ardından kalanını taşıyın ve Mailgun'ı son zamanlanmış ve yeniden denenen mesajları gidene kadar etkin tutun.
Kaynaklar
Bu rehberde kullanılan Mailgun'ın herkese açık sayfaları.
- [1]Mailgun API: mesaj göndermehttps://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/messages/post-v3--domain-name--messages4 Kasım 2026 tarihinde kontrol edildi
- [2]Mailgun API: kimlik doğrulamahttps://documentation.mailgun.com/docs/mailgun/api-reference/authentication4 Kasım 2026 tarihinde kontrol edildi
- [3]Mailgun: SMTP ile gönderimhttps://documentation.mailgun.com/docs/mailgun/user-manual/sending-messages/send-smtp4 Kasım 2026 tarihinde kontrol edildi
- [4]Mailgun: şablonlarla gönderimhttps://documentation.mailgun.com/docs/mailgun/user-manual/sending-messages/send-templates4 Kasım 2026 tarihinde kontrol edildi
- [5]Mailgun: webhook'larhttps://documentation.mailgun.com/docs/mailgun/user-manual/webhooks/webhooks4 Kasım 2026 tarihinde kontrol edildi
- [6]Mailgun: webhook'ları güvenceye almahttps://documentation.mailgun.com/docs/mailgun/user-manual/webhooks/securing-webhooks4 Kasım 2026 tarihinde kontrol edildi
- [7]Mailgun API: geri dönmelerhttps://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/bounces/get-v3--domainid--bounces4 Kasım 2026 tarihinde kontrol edildi
Sık sorulan sorular
Test ederken Mailgun üzerinden göndermeye devam edebilir miyim?
Evet. Bir alan adını Mail.Land'de doğrulamak, Mailgun'ın o alan adı için göndermesini durdurmaz; ikisini birlikte çalıştırıp trafiği kademeli olarak taşıyabilirsiniz.
Mailgun ABD veya AB bölgesi seçmeme izin veriyor. Mail.Land nerede çalışıyor?
Mail.Land'de seçilecek bölge yoktur. Verilerinizin birincil kopyası Almanya'dadır; AB dışındaki sağlayıcılar GDPR sayfamızda listelenir.
Aynı anda çok sayıda alıcıya nasıl gönderirim?
Bir pazarlama anahtarıyla (ml_pem_) POST /v1/transactional/send-batch kullanın. Her biri kendi değişkenleriyle 10.000 alıcıya kadar kabul eder. İşlemsel anahtar istek başına en fazla 5 alıcı kabul eder.
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.
Mailgun'dan 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.