Geçiş kılavuzu
SendGrid'den Mail.Land'e geçiş
Değişiklik çoğu zaman tek bir SMTP sunucusundan veya tek bir API çağrısından ibarettir. Bu kılavuz, yaygın SendGrid alanlarını Mail.Land ile eşleştirir ve kod değişikliği gerektiren farkları listeler.
# Before (SendGrid)
SMTP_HOST=smtp.sendgrid.net
SMTP_PORT=587
SMTP_USER=apikey
SMTP_PASS=<your SendGrid API key>
# After (Mail.Land)
SMTP_HOST=smtp.mail.land
SMTP_PORT=587 # STARTTLS
SMTP_USER=apikey # any value; Mail.Land ignores it
SMTP_PASS=<your Mail.Land API key with SMTP enabled>Mail.Land'de SendGrid kavramları
| SendGrid | Mail.Land |
|---|---|
| API anahtarı | API, SMTP, alan adları ve IP adresleriyle sınırlandırılabilen API anahtarı (kimlik bilgisi) |
| Gönderen kimlik doğrulaması | Alan adı doğrulaması (SPF, DKIM, DMARC ve return-path) |
| Dinamik şablonlar | {{name}} yer tutuculu şablonlar |
| Engelleme listeleri ve abonelikten çıkma grupları | Kapsamlı engelleme kayıtları: tüm e-postalar, yalnızca pazarlama veya tek bir posta listesi |
| Event Webhook | HMAC-SHA256 ile imzalanan webhook'lar |
| Inbound Parse | Gelen e-posta rotaları |
SMTP'yi değiştirin: üç ayarı güncelleyin
SMTP üzerinden gönderim yapıyorsanız sunucuyu, portu ve parolayı değiştirin. Kullanıcı adı apikey olarak kalabilir; çünkü Mail.Land bunu dikkate almaz ve kimlik doğrulamayı yalnızca anahtarla yapar.
| Ayar | SendGrid | Mail.Land |
|---|---|---|
| Sunucu | smtp.sendgrid.net | smtp.mail.land |
| Port | 25, 587 veya 2525 (TLS) ya da 465 (SSL) | STARTTLS ile 587 |
| Kullanıcı adı | apikey | Herhangi bir değer, örneğin apikey |
| Parola | SendGrid API anahtarınız | SMTP'si etkinleştirilmiş bir Mail.Land API anahtarı |
Mail.Land, oturum açmayı yalnızca STARTTLS'ten sonra kabul eder ve 465 portu sunulmaz. Uygulamanız 465 portunu kullanıyorsa STARTTLS ile 587 portuna geçirin.
API çağrısını değiştirin
Mail.Land gönderim çağrısı daha düz bir JSON gövdesi ve X-API-Key başlığı kullanır. Aynı ileti her iki API'de şöyle görünür.
curl -X POST https://api.sendgrid.com/v3/mail/send \
-H "Authorization: Bearer $SENDGRID_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"personalizations": [{
"to": [{ "email": "[email protected]", "name": "Jane" }],
"dynamic_template_data": { "orderNumber": "12345" }
}],
"from": { "email": "[email protected]", "name": "Your Shop" },
"reply_to": { "email": "[email protected]" },
"subject": "Order 12345 has shipped",
"content": [
{ "type": "text/plain", "value": "Your order is on its way." },
{ "type": "text/html", "value": "<p>Your order is on its way.</p>" }
],
"categories": ["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 '{
"to": [{
"email": "[email protected]", "name": "Jane",
"variables": { "orderNumber": "12345" }
}],
"from": { "email": "[email protected]", "name": "Your Shop" },
"replyTo": "[email protected]",
"subject": "Order 12345 has shipped",
"textContent": "Your order is on its way.",
"htmlContent": "<p>Your order is on its way.</p>",
"tags": ["order-shipped"]
}'Gönderim çağrısı için alan eşleştirmesi
POST /v3/mail/send çağrısından POST /v1/transactional/send çağrısına.
| SendGrid | Mail.Land | Not |
|---|---|---|
Authorization: Bearer <key> | X-API-Key: <key> | Farklı bir başlık. |
from.email, from.name | from.email, from.name | Adres, doğrulanmış bir alan adına ait olmalıdır. |
personalizations[].to[] | to[] | İşlemsel bir anahtarla istek başına en fazla 5 alıcı. Toplu gönderim için bir pazarlama anahtarıyla toplu (batch) gönderimi kullanın. |
personalizations[].cc, bcc | Karşılığı yok | Desteklenmez. Her alıcıya ayrı bir ileti gönderin. |
personalizations[].dynamic_template_data | to[].variables | Alıcı başına değerler. Tüm alıcılar için ortak olan değerler için üst düzeydeki variables alanını kullanın. |
subject | subject | Şablon kullanmıyorsanız zorunludur. |
content[] (text/html) | htmlContent | |
content[] (text/plain) | textContent | |
template_id | templateId | Önce şablonu Mail.Land'de yeniden oluşturun; kimlik (ID) değişir. |
reply_to.email | replyTo | Düz bir adres dizesi. |
categories, custom_args | tags | Etiketler analitikte ve webhook olaylarında görünür. |
headers | customHeaders | |
attachments[].content, filename, type | attachments[].content, fileName, contentType | Base64 içerik. En fazla 10 ek ve toplamda 10 MiB. |
attachments[].disposition, content_id | attachments[].inline, contentId | Satır içi görsel için inline: true. |
send_at (Unix zamanı, en fazla 72 saat sonrası) | scheduledAt (UTC tarih ve saat, en fazla 7 gün sonrası) | |
tracking_settings (open, click) | tracking.opens, tracking.clicks | Açılmalar için alan adının kendi takip ayarları önceliklidir. |
asm.group_id | Gönderim çağrısında karşılığı yok | Pazarlama abonelikten çıkmaları Mail.Land listeleri ve kampanyalarıyla yönetilir. Mevcut grup abonelikten çıkmalarını içe aktarın, aşağıya bakın. |
Karşılığı yok | X-Idempotency-Key başlığı | Saklama süresi içinde, aynı anahtarla yapılan bir yeniden deneme, yeniden gönderim yapmak yerine ilk yanıtı döndürür. |
Her iki API de 202 Accepted ile yanıt verir. Mail.Land'in yanıt gövdesi bir jobId, alıcı başına bir mesaj kimliği ve kabul edilen ve reddedilen alıcıların listelerini içerir.
Önce engelleme listelerinizi içe aktarın
Abonelikten çıkan veya şikâyette bulunan kişilerin başından itibaren engelli kalması için, Mail.Land üzerinden ilk gönderiminizden önce içe aktarın. Her listeyi SendGrid'den CSV olarak dışa aktarın, ardından kontrol panelinde veya POST /v1/transactional/suppressions/import ile uygun tür ve kapsamla içe aktarın.
| SendGrid listesi | Mail.Land türü | Kapsam |
|---|---|---|
| Bounces | HardBounce | Global |
| Spam Reports | Complaint | Global |
| Invalid Emails | Invalid | Global |
| Global Unsubscribes | Unsubscribe | Global |
| Group Unsubscribes | Unsubscribe | List, eşleşen Mail.Land posta listesi için; Marketing tüm pazarlama e-postalarını engeller |
SendGrid'deki blocks kayıtları genellikle geçici reddetmelerdir. Hepsini engellemek yerine içe aktarmadan önce gözden geçirin.
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ı webhook'unuzun gizli anahtarıyla doğrulayın. Olay adları SendGrid'dekilerden farklıdır; bu nedenle işleyicinizi güncelleyin:
| SendGrid olayı | Mail.Land olayı |
|---|---|
delivered | message.delivered |
deferred | message.deferred |
bounce | message.bounced |
open, click | Henüz yok |
spamreport | message.complained |
unsubscribe | message.unsubscribed |
Yinelenenleri event_id alanına göre ayıklayın: yeniden denenen bir teslimat aynı olay kimliğini taşır. SendGrid'in open ve click olaylarının bugün Mail.Land'de karşılığı olan bir webhook'u yok: açılma ve tıklama olayları katalogda yer alır ama gönderilmez.
Adım adım geçiş
- Gönderim alan adınızı Mail.Land'e ekleyin ve doğrulayın. SendGrid kayıtlarınızı koruyun: ikinci bir SPF kaydı oluşturmak yerine mevcut SPF kaydınıza include:spf.mlnd.net ekleyin ve tek bir DMARC kaydı bulundurun.
- Engelleme listelerinizi içe aktarın.
- Yalnızca günlüğe kaydedecek şekilde ayarlanmış bir sandbox anahtarı oluşturun ve entegrasyon testlerinizi e-posta teslim etmeden Mail.Land'e karşı çalıştırın.
- Kontrolünüzdeki adreslere gerçek iletiler gönderin ve bunları 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.
- Her iki sağlayıcı da çalışırken yeni abonelikten çıkmaları, şikâyetleri ve geri dönmeleri SendGrid'den Mail.Land'e aktarın ve son trafiği taşımadan önce son bir eşitleme yapın.
- Geri kalanını taşıyın ve son planlanmış ve yeniden denenen iletileri gönderilene kadar SendGrid'i etkin tutun.
Sık sorulan sorular
Test ederken SendGrid üzerinden göndermeye devam edebilir miyim?
Evet. Bir alan adını Mail.Land'de doğrulamak, SendGrid'in o alan adı için gönderim yapmasını durdurmaz; böylece ikisini birlikte çalıştırabilir ve trafiği kademeli olarak taşıyabilirsiniz.
Mail.Land cc ve bcc'yi destekliyor mu?
Gönderim çağrısında desteklemez. Bunun yerine her alıcıya ayrı bir ileti gönderin.
Resmi bir Mail.Land SDK'sı var mı?
Henüz yok. Belgelerde REST API için sekiz dilde kopyalayıp yapıştırabileceğiniz örnekler bulunur ve herhangi bir SMTP kütüphanesi röleyle çalışır.
Abonelikten çıkma gruplarıma ne olur?
Her grubun abonelikten çıkmalarını, eşleşen Mail.Land posta listesi için List kapsamıyla içe aktarın ve tercihin uygulanması için o listeye gönderim yapın. Marketing kapsamı daha geniş bir yedek seçenektir: o adrese giden tüm pazarlama e-postalarını engeller.
SendGrid'den 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.