Baskılama Listeleri
Geçersiz, abonelikten çıkmış veya şikayet etmiş adreslere gönderimi engellemek için baskılama listelerini yönetin
Baskılama listesi, geri dönen, abonelikten çıkan veya şikayette bulunan adreslere e-posta gönderilmesini engeller. MailLand, baskılamaları geri dönme ve şikayet olaylarından otomatik olarak yönetir; API aracılığıyla manuel olarak girdi ekleyip kaldırabilirsiniz.
Baskılama Türleri
| Tür | Değer | Açıklama | Varsayılan Kapsam |
|---|---|---|---|
HardBounce | 1 | Kalıcı teslimat hatası | Global (her zaman) |
SoftBounce | 2 | Geçici hata (30 günlük pazarlama bastırması; yalnızca ≥7 gün boyunca yayılan ≥3 uygun geri dönmeden sonra yükselir) | Marketing (30 günlük süre sonu) |
Complaint | 3 | Alıcı e-postayı spam olarak işaretledi | Global (her zaman) |
Unsubscribe | 4 | Alıcı abonelikten çıktı | İleti türüne bağlı |
Manual | 5 | API veya pano üzerinden manuel olarak eklendi | Herhangi bir kapsam |
Invalid | 6 | Geçersiz e-posta biçimi | Global (her zaman) |
SpamTrap | 7 | Bilinen spam tuzağı adresi | Global (her zaman) |
RoleAddress | 8 | Rol tabanlı e-posta (info@, admin@, vb.) | Global (her zaman) |
Baskılama Kapsamları
Kapsamlar, hangi tür e-postaların engellendiğini kontrol eder:
| Kapsam | Değer | Davranış |
|---|---|---|
Global | 0 | Tüm e-postaları engeller (işlemsel ve pazarlama) |
Marketing | 1 | Pazarlama e-postalarını engeller; işlemsel e-postalar yine de teslim edilir |
Transactional | 2 | Yalnızca işlemsel e-postaları engeller (nadir) |
List | 3 | Yalnızca belirli bir posta listesi için e-postaları engeller |
Kapsam kısıtlamaları:
HardBounce,Complaint,Invalid,SpamTrap,RoleAddress→ Yalnızca Global kapsamSoftBounce→ Genellikle Marketing kapsamıUnsubscribe→ Global, Marketing veya List (Transactional değil)Manual→ Herhangi bir kapsam
Baskılamaları Listele
GET https://api.mail.land/v1/transactional/suppressionsAuthorization: Bearer <token> veya X-API-Key: <api key> ile kimlik doğrulaması yapın.
curl https://api.mail.land/v1/transactional/suppressions \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Sorgu Parametreleri
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
cursor | string | - | Önceki sayfanın nextCursor değerinden alınan opak imleç. İlk sayfa için belirtmeyin. |
limit | int | 50 | Sayfa başına öğe (maks. 100) |
search | string | - | E-posta adresine göre filtrele |
type | SuppressionType | - | Türe göre filtrele |
scope | SuppressionScope | - | Kapsama göre filtrele |
mailingListId | string | - | Posta listesinin herkese açık kimliği, kiracınız içinde çözümlenir. Bilinmeyen, başkasına ait veya sayısal bir kimlik 404 döndürür. |
fromDate | datetime | 90 gün önce | Başlangıç tarihi |
toDate | datetime | Şimdi | Bitiş tarihi |
sortBy | string | CreatedAt | Sıralama alanı |
sortDescending | bool | true | Sıralama yönü |
{
"items": [
{
"id": "k3v9x2m8q1w7z4",
"email": "[email protected]",
"suppressionType": "hardBounce",
"scope": "global",
"mailingListId": null,
"mailingListName": null,
"expiresAt": null,
"reason": "550 5.1.1 The email account does not exist",
"bounceType": "Hard",
"bounceCategory": "invalid_recipient",
"bounceCount": 1,
"lastBounceAt": "2026-02-17T12:00:00Z",
"unsubscribeSource": null,
"campaignId": null,
"subscriberId": null,
"source": "webhook",
"notes": null,
"createdAt": "2026-02-17T12:00:01Z",
"isLocked": false,
"lockedReason": null
}
],
"nextCursor": "eyJ2IjoxLCJzIjoiY3JlYXRlZGF0OmRlc2MiLCJrIjoi...",
"hasMore": true
}mailingListId, campaignId ve subscriberId, ilgili kaynağın kiracınız içinde çözümlenmiş herkese açık kimliğidir: asla dahili sayısal satır kimliği değildir. Bu tür bir bağlantı olmadığında veya bağlı kaynak o zamandan beri silinmişse her biri null olur.
Baskılama İstatistikleri
Baskılama listenizin özetini alın:
GET https://api.mail.land/v1/transactional/suppressions/statscurl https://api.mail.land/v1/transactional/suppressions/stats \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"totalCount": 5000,
"globalCount": 3000,
"marketingCount": 1500,
"transactionalCount": 200,
"listCount": 300,
"hardBounceCount": 2000,
"softBounceCount": 1500,
"complaintCount": 500,
"unsubscribeCount": 700,
"manualCount": 200,
"invalidCount": 50,
"spamTrapCount": 30,
"roleAddressCount": 20,
"expiringCount": 85,
"lastSuppression": "2026-02-17T12:00:01Z"
}expiringCount, sonraki 7 gün içinde sona erecek geçici geri dönmeleri gösterir.
Bir E-postanın Baskılanıp Baskılanmadığını Kontrol Et
Tekli kontrol
GET https://api.mail.land/v1/transactional/suppressions/[email protected]&messageType=Marketingcurl "https://api.mail.land/v1/transactional/suppressions/[email protected]&messageType=Marketing" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
email | string | - | E-posta adresi (zorunlu) |
messageType | string | Marketing | Marketing veya Transactional |
mailingListId | string | - | Posta listesinin herkese açık kimliği, kiracınız içinde çözümlenir. Bilinmeyen, başkasına ait veya sayısal bir kimlik 404 döndürür. |
{
"email": "[email protected]",
"isSuppressed": true,
"messageType": "Marketing"
}Toplu kontrol
Aynı anda 1.000'e kadar e-postayı kontrol edin:
POST https://api.mail.land/v1/transactional/suppressions/check-bulkcurl -X POST https://api.mail.land/v1/transactional/suppressions/check-bulk \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"emails":["[email protected]","[email protected]","[email protected]"],"messageType":"Marketing","mailingListId":null}'{
"emails": ["[email protected]", "[email protected]", "[email protected]"],
"messageType": "Marketing",
"mailingListId": null
}{
"suppressedEmails": ["[email protected]"]
}Baskılama Ekle
POST https://api.mail.land/v1/transactional/suppressionscurl -X POST https://api.mail.land/v1/transactional/suppressions \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","suppressionType":"Manual","scope":"Global","reason":"Customer requested removal from all lists","notes":"Ticket #4521"}'{
"email": "[email protected]",
"suppressionType": "Manual",
"scope": "Global",
"reason": "Customer requested removal from all lists",
"notes": "Ticket #4521"
}| Alan | Tür | Zorunlu | Varsayılan | Açıklama |
|---|---|---|---|---|
email | string | Evet | - | E-posta adresi (maks. 255 karakter) |
suppressionType | string | Hayır | Manual | Baskılama türü |
scope | string | Hayır | Global | Baskılama kapsamı |
mailingListId | string | Hayır | - | Posta listesinin herkese açık kimliği, kiracınız içinde çözümlenir. Kapsam List ise zorunludur; bilinmeyen, başkasına ait veya sayısal bir kimlik 404 döndürür. |
reason | string | Hayır | - | Neden (maks. 500 karakter) |
notes | string | Hayır | - | Dahili notlar |
Tam baskılama nesnesiyle birlikte 201 Created döndürür. Location başlığı
/v1/transactional/suppressions değeridir: id ile getirme uç noktası olmadığından liste rotası
kullanılır. Oluşturulan baskılamayı tanımlamak için gövdedeki id alanını, aramak için ise aşağıdaki
"Baskılamaları Listele" veya "Bir E-postanın Baskılanıp Baskılanmadığını Kontrol Et" bölümlerini
kullanın.
Toplu Ekle
Aynı anda 1.000'e kadar baskılama ekleyin:
POST https://api.mail.land/v1/transactional/suppressions/bulkcurl -X POST https://api.mail.land/v1/transactional/suppressions/bulk \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"emails":[{"email":"[email protected]","suppressionType":"Manual","scope":"Global","reason":"Cleanup"},{"email":"[email protected]","suppressionType":"Manual","scope":"Marketing"}]}'{
"emails": [
{ "email": "[email protected]", "suppressionType": "Manual", "scope": "Global", "reason": "Cleanup" },
{ "email": "[email protected]", "suppressionType": "Manual", "scope": "Marketing" }
]
}{
"totalCount": 2,
"addedCount": 2,
"skippedCount": 0,
"skippedEmails": [],
"message": "Added 2 suppressions"
}Baskılama listesinde zaten bulunan e-postalar atlanır (çoğaltılmaz).
CSV'den İçe Aktar
Metin içeriğinden
POST https://api.mail.land/v1/transactional/suppressions/importcurl -X POST https://api.mail.land/v1/transactional/suppressions/import \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"csvContent":"[email protected]\[email protected]\[email protected]","defaultReason":"Imported from legacy system","suppressionType":"Manual","scope":"Global"}'{
"csvContent": "[email protected]\n[email protected]\n[email protected]",
"defaultReason": "Imported from legacy system",
"suppressionType": "Manual",
"scope": "Global"
}Dosya yüklemesinden
POST https://api.mail.land/v1/transactional/suppressions/import-filecurl -X POST "https://api.mail.land/v1/transactional/suppressions/import-file?scope=List&mailingListId=123" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-F "[email protected]"scope ve mailingListId form alanı değil, sorgu parametresidir: bu adlardan biriyle gönderilen bir form alanı sessizce yok sayılır, bu yüzden form alanı olarak gönderilen bir List kapsamlı içe aktarma 400 ile başarısız olur. mailingListId, kiracınız içinde çözümlenen listenin herkese açık kimliğidir; bilinmeyen, başkasına ait veya sayısal bir kimlik 404 döndürür.
Virgüller veya yeni satırlarla ayrılmış e-posta adresleri içeren bir .csv dosyası (maks. 5 MB) yükleyin. "email" içeren başlık satırı otomatik olarak atlanır.
Sorgu parametreleri:
| Parametre | Tür | Açıklama |
|---|---|---|
file | file (multipart form alanı) | CSV dosyası (maks. 5 MB, .csv uzantısı gerekli) |
scope | string (sorgu) | Baskılama kapsamı (varsayılan: Global) |
mailingListId | string (sorgu) | Posta listesinin herkese açık kimliği, kiracınız içinde çözümlenir. Kapsam List ise zorunludur; bilinmeyen, başkasına ait veya sayısal bir kimlik 404 döndürür. |
{
"totalRows": 1000,
"importedCount": 950,
"skippedCount": 40,
"invalidCount": 10,
"invalidEmails": ["not-an-email", "missing-domain@", "..."],
"errors": [],
"message": "Imported 950 emails. 40 already existed. 10 invalid."
}invalidEmails listesi en fazla 10 geçersiz girdiyi gösterir. Zaten mevcut e-postalar skippedCount olarak sayılır, hata olarak değil.
Baskılamaları Dışa Aktar
Baskılama listenizi CSV olarak indirin:
GET https://api.mail.land/v1/transactional/suppressions/exportcurl https://api.mail.land/v1/transactional/suppressions/export \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-o suppressions.csv| Parametre | Tür | Açıklama |
|---|---|---|
type | SuppressionType | Türe göre filtrele |
scope | SuppressionScope | Kapsama göre filtrele |
mailingListId | string | Posta listesinin herkese açık kimliği, kiracınız içinde çözümlenir. Bilinmeyen, başkasına ait veya sayısal bir kimlik 404 döndürür. |
Şu sütunları içeren bir CSV dosyası döndürür: email, type, scope, mailing_list, reason, bounce_count, source, created_at, expires_at. 100.000 satırla sınırlıdır.
Baskılama Kaldır
Kimliğe göre
DELETE https://api.mail.land/v1/transactional/suppressions/{id}curl -X DELETE https://api.mail.land/v1/transactional/suppressions/k3v9x2m8q1w7z4 \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."E-postaya göre
DELETE https://api.mail.land/v1/transactional/suppressions/[email protected]curl -X DELETE "https://api.mail.land/v1/transactional/suppressions/[email protected]" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."| Parametre | Tür | Açıklama |
|---|---|---|
email | string | Baskılaması kaldırılacak e-posta (zorunlu) |
scope | SuppressionScope | Yalnızca bu kapsam için kaldır |
mailingListId | string | Yalnızca bu posta listesi için kaldır: herkese açık kimliği, kiracınız içinde çözümlenir. Bilinmeyen, başkasına ait veya sayısal bir kimlik 404 döndürür. |
Başarı durumunda 204 No Content, bulunamadığında 404 döndürür.
Kilitli Baskılamalar
Belirli baskılamalar, gönderici itibarınızı korumak ve spam karşıtı düzenlemelere uymak için silinemez:
| Kilitli Tür | Neden |
|---|---|
Complaint | Spam şikayeti: uyumluluk gereksinimi |
SpamTrap | Bilinen spam tuzağı: teslim edilebilirlik koruması |
FeedbackLoop üzerinden abonelik iptali | ISP geri bildirim döngüsü |
OneClick üzerinden abonelik iptali | RFC 8058 tek tıklamayla abonelik iptali |
ManualLink üzerinden abonelik iptali | Kullanıcı bağlantı aracılığıyla onayladı |
Preference üzerinden abonelik iptali | Tercih merkezi seçimi |
Kilitli bir baskılamayı silmeye çalışmak şu sonucu döndürür:
{
"code": "SUPPRESSION_LOCKED",
"message": "Cannot delete: Spam complaint - compliance requirement",
"details": {
"lockedReason": "Spam complaint - compliance requirement"
}
}Şikayete dayalı baskılamaları silmek ve bu adreslere yeniden göndermek gönderici itibarınıza zarar verir ve spam karşıtı yasaları ihlal edebilir. Bu baskılamalar sizin korumanız için kilitlenmiştir.
Abonelik İptali Kaynakları
Bir alıcı aboneliğini iptal ettiğinde, kaynak kaydedilir:
| Kaynak | Değer | Açıklama | Kilitli |
|---|---|---|---|
ListUnsubscribeHeader | 0 | RFC 8058 List-Unsubscribe başlığı | Hayır |
ListUnsubscribeMail | 1 | mailto: abonelik iptali | Hayır |
WebForm | 2 | Web abonelik iptali sayfası | Hayır |
Api | 3 | API çağrısı | Hayır |
Admin | 4 | Yönetici paneli | Hayır |
FeedbackLoop | 5 | ISP geri bildirim döngüsü | Evet |
OneClick | 6 | RFC 8058 POST tek tıklama | Evet |
ManualLink | 7 | Kullanıcı bağlantı aracılığıyla onayladı | Evet |
Preference | 8 | Tercih merkezi seçimi | Evet |
Hata Yanıtları
| Durum | Kod | Açıklama |
|---|---|---|
400 | INVALID_REQUEST | Doğrulama hatası (geçersiz e-posta, kapsam veya tür) |
400 | INVALID_EMAIL_FORMAT | E-posta adresi biçimi geçersiz |
400 | CONTENT_TOO_LARGE | CSV dosyası 5 MB'ı aşıyor |
403 | SUPPRESSION_LOCKED | Kilitli baskılama silinemez |
404 | RESOURCE_NOT_FOUND | Baskılama bulunamadı veya verilen mailingListId, kiracınızda hiçbir posta listesini adlandırmıyor |
Sonraki Adımlar
- Geri Dönmeler: geri dönme türlerini ve otomatik baskılamayı anlayın
- Teslim Edilebilirliğe Genel Bakış: gönderici itibarını izleyin
- Web Kancası Olayları:
message.bouncedolaylarını alın (suppression.added/suppression.removedkatalogda tanımlı ancak bugün hiç tetiklenmiyor)