MailLandDocs
Teslim Edilebilirlik

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ürDeğerAçıklamaVarsayılan Kapsam
HardBounce1Kalıcı teslimat hatasıGlobal (her zaman)
SoftBounce2Geç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)
Complaint3Alıcı e-postayı spam olarak işaretlediGlobal (her zaman)
Unsubscribe4Alıcı abonelikten çıktıİleti türüne bağlı
Manual5API veya pano üzerinden manuel olarak eklendiHerhangi bir kapsam
Invalid6Geçersiz e-posta biçimiGlobal (her zaman)
SpamTrap7Bilinen spam tuzağı adresiGlobal (her zaman)
RoleAddress8Rol tabanlı e-posta (info@, admin@, vb.)Global (her zaman)

Baskılama Kapsamları

Kapsamlar, hangi tür e-postaların engellendiğini kontrol eder:

KapsamDeğerDavranış
Global0Tüm e-postaları engeller (işlemsel ve pazarlama)
Marketing1Pazarlama e-postalarını engeller; işlemsel e-postalar yine de teslim edilir
Transactional2Yalnızca işlemsel e-postaları engeller (nadir)
List3Yalnızca belirli bir posta listesi için e-postaları engeller

Kapsam kısıtlamaları:

  • HardBounce, Complaint, Invalid, SpamTrap, RoleAddress → Yalnızca Global kapsam
  • SoftBounce → 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/suppressions

Authorization: Bearer <token> veya X-API-Key: <api key> ile kimlik doğrulaması yapın.

List suppressions
curl https://api.mail.land/v1/transactional/suppressions \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Sorgu Parametreleri

ParametreTürVarsayılanAçıklama
cursorstring-Önceki sayfanın nextCursor değerinden alınan opak imleç. İlk sayfa için belirtmeyin.
limitint50Sayfa başına öğe (maks. 100)
searchstring-E-posta adresine göre filtrele
typeSuppressionType-Türe göre filtrele
scopeSuppressionScope-Kapsama göre filtrele
mailingListIdstring-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.
fromDatedatetime90 gün önceBaşlangıç tarihi
toDatedatetimeŞimdiBitiş tarihi
sortBystringCreatedAtSıralama alanı
sortDescendingbooltrueSıralama yönü
Suppression list response
{
  "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/stats
Get suppression stats
curl https://api.mail.land/v1/transactional/suppressions/stats \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Stats response
{
  "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=Marketing
Check suppression
curl "https://api.mail.land/v1/transactional/suppressions/[email protected]&messageType=Marketing" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
ParametreTürVarsayılanAçıklama
emailstring-E-posta adresi (zorunlu)
messageTypestringMarketingMarketing veya Transactional
mailingListIdstring-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.
Check response
{
  "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-bulk
Bulk check suppressions
curl -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}'
Bulk check request
{
  "emails": ["[email protected]", "[email protected]", "[email protected]"],
  "messageType": "Marketing",
  "mailingListId": null
}
Bulk check response
{
  "suppressedEmails": ["[email protected]"]
}

Baskılama Ekle

POST https://api.mail.land/v1/transactional/suppressions
Add suppression
curl -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"}'
Add suppression request
{
  "email": "[email protected]",
  "suppressionType": "Manual",
  "scope": "Global",
  "reason": "Customer requested removal from all lists",
  "notes": "Ticket #4521"
}
AlanTürZorunluVarsayılanAçıklama
emailstringEvet-E-posta adresi (maks. 255 karakter)
suppressionTypestringHayırManualBaskılama türü
scopestringHayırGlobalBaskılama kapsamı
mailingListIdstringHayı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.
reasonstringHayır-Neden (maks. 500 karakter)
notesstringHayı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/bulk
Bulk add suppressions
curl -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"}]}'
Bulk add request
{
  "emails": [
    { "email": "[email protected]", "suppressionType": "Manual", "scope": "Global", "reason": "Cleanup" },
    { "email": "[email protected]", "suppressionType": "Manual", "scope": "Marketing" }
  ]
}
Bulk add response
{
  "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/import
Import suppressions from CSV text
curl -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"}'
CSV import request
{
  "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-file
Import suppressions from file
curl -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:

ParametreTürAçıklama
filefile (multipart form alanı)CSV dosyası (maks. 5 MB, .csv uzantısı gerekli)
scopestring (sorgu)Baskılama kapsamı (varsayılan: Global)
mailingListIdstring (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.
Import result
{
  "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/export
Export suppressions
curl https://api.mail.land/v1/transactional/suppressions/export \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -o suppressions.csv
ParametreTürAçıklama
typeSuppressionTypeTüre göre filtrele
scopeSuppressionScopeKapsama göre filtrele
mailingListIdstringPosta 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}
Delete suppression by 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]
Delete suppression by email
curl -X DELETE "https://api.mail.land/v1/transactional/suppressions/[email protected]" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
ParametreTürAçıklama
emailstringBaskılaması kaldırılacak e-posta (zorunlu)
scopeSuppressionScopeYalnızca bu kapsam için kaldır
mailingListIdstringYalnı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ürNeden
ComplaintSpam şikayeti: uyumluluk gereksinimi
SpamTrapBilinen spam tuzağı: teslim edilebilirlik koruması
FeedbackLoop üzerinden abonelik iptaliISP geri bildirim döngüsü
OneClick üzerinden abonelik iptaliRFC 8058 tek tıklamayla abonelik iptali
ManualLink üzerinden abonelik iptaliKullanıcı bağlantı aracılığıyla onayladı
Preference üzerinden abonelik iptaliTercih merkezi seçimi

Kilitli bir baskılamayı silmeye çalışmak şu sonucu döndürür:

403 Forbidden
{
  "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:

KaynakDeğerAçıklamaKilitli
ListUnsubscribeHeader0RFC 8058 List-Unsubscribe başlığıHayır
ListUnsubscribeMail1mailto: abonelik iptaliHayır
WebForm2Web abonelik iptali sayfasıHayır
Api3API çağrısıHayır
Admin4Yönetici paneliHayır
FeedbackLoop5ISP geri bildirim döngüsüEvet
OneClick6RFC 8058 POST tek tıklamaEvet
ManualLink7Kullanıcı bağlantı aracılığıyla onayladıEvet
Preference8Tercih merkezi seçimiEvet

Hata Yanıtları

DurumKodAçıklama
400INVALID_REQUESTDoğrulama hatası (geçersiz e-posta, kapsam veya tür)
400INVALID_EMAIL_FORMATE-posta adresi biçimi geçersiz
400CONTENT_TOO_LARGECSV dosyası 5 MB'ı aşıyor
403SUPPRESSION_LOCKEDKilitli baskılama silinemez
404RESOURCE_NOT_FOUNDBaskılama bulunamadı veya verilen mailingListId, kiracınızda hiçbir posta listesini adlandırmıyor

Sonraki Adımlar

Bu sayfada