MailLandDocs
Zustellbarkeit

Unterdrückungen

Verwalten Sie Unterdrückungslisten, um den Versand an ungültige, abgemeldete oder beschwerdeführende Adressen zu verhindern

Die Unterdrückungsliste verhindert, dass E-Mails an Adressen gesendet werden, die gebounced haben, sich abgemeldet haben oder Beschwerden eingereicht haben. MailLand verwaltet Unterdrückungen automatisch basierend auf Bounce- und Beschwerde-Events, und Sie können Einträge manuell über die API hinzufügen oder entfernen.

Unterdrückungstypen

TypWertBeschreibungStandard-Geltungsbereich
HardBounce1Permanenter ZustellfehlerGlobal (immer)
SoftBounce2Vorübergehender Fehler (30-tägige Marketing-Unterdrückung, eskaliert erst nach ≥3 geeigneten Bounces über ≥7 Tage)Marketing (30 Tage Ablaufzeit)
Complaint3Empfänger hat E-Mail als Spam markiertGlobal (immer)
Unsubscribe4Empfänger hat sich abgemeldetAbhängig vom Nachrichtentyp
Manual5Manuell über API oder Dashboard hinzugefügtBeliebiger Geltungsbereich
Invalid6Ungültiges E-Mail-FormatGlobal (immer)
SpamTrap7Bekannte Spam-Trap-AdresseGlobal (immer)
RoleAddress8Rollenbasierte E-Mail (info@, admin@ usw.)Global (immer)

Unterdrückungs-Geltungsbereiche

Geltungsbereiche steuern, welche Arten von E-Mails blockiert werden:

GeltungsbereichWertVerhalten
Global0Blockiert alle E-Mails (transaktional und Marketing)
Marketing1Blockiert Marketing-E-Mails; transaktionale E-Mails werden weiterhin zugestellt
Transactional2Blockiert nur transaktionale E-Mails (selten)
List3Blockiert E-Mails nur für eine bestimmte Mailingliste

Geltungsbereichs-Einschränkungen:

  • HardBounce, Complaint, Invalid, SpamTrap, RoleAddress → nur globaler Geltungsbereich
  • SoftBounce → typischerweise Marketing-Geltungsbereich
  • Unsubscribe → Global, Marketing oder List (nicht Transactional)
  • Manual → beliebiger Geltungsbereich

Unterdrückungen auflisten

GET https://api.mail.land/v1/transactional/suppressions

Authentifizierung mit Authorization: Bearer <token> oder X-API-Key: <api key>.

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

Abfrageparameter

ParameterTypStandardBeschreibung
cursorstring-Opaker Cursor aus dem nextCursor der vorherigen Seite. Für die erste Seite weglassen.
limitint50Einträge pro Seite (max. 100)
searchstring-Nach E-Mail-Adresse filtern
typeSuppressionType-Nach Typ filtern
scopeSuppressionScope-Nach Geltungsbereich filtern
mailingListIdstring-Die öffentliche ID der Mailingliste, aufgelöst innerhalb Ihres Mandanten. Eine unbekannte, fremde oder numerische ID liefert 404.
fromDatedatetimevor 90 TagenStartdatum
toDatedatetimeJetztEnddatum
sortBystringCreatedAtSortierfeld
sortDescendingbooltrueSortierrichtung
Unterdrückungslisten-Antwort
{
  "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 und subscriberId sind die öffentliche ID der jeweils verknüpften Ressource, aufgelöst innerhalb Ihres Mandanten, niemals die interne numerische Zeilen-ID. Jedes Feld ist null, wenn kein solcher Bezug besteht oder die verknüpfte Ressource inzwischen gelöscht wurde.

Unterdrückungs-Statistiken

Erhalten Sie eine Zusammenfassung Ihrer Unterdrückungsliste:

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..."
Statistik-Antwort
{
  "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"
}

Der Wert expiringCount zeigt Soft Bounces an, die innerhalb der nächsten 7 Tage ablaufen.

Prüfen, ob eine E-Mail unterdrückt ist

Einzelprüfung

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..."
ParameterTypStandardBeschreibung
emailstring-E-Mail-Adresse (erforderlich)
messageTypestringMarketingMarketing oder Transactional
mailingListIdstring-Die öffentliche ID der Mailingliste, aufgelöst innerhalb Ihres Mandanten. Eine unbekannte, fremde oder numerische ID liefert 404.
Prüf-Antwort
{
  "email": "[email protected]",
  "isSuppressed": true,
  "messageType": "Marketing"
}

Massenprüfung

Prüfen Sie bis zu 1.000 E-Mails auf einmal:

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}'
Massenprüfung-Anfrage
{
  "emails": ["[email protected]", "[email protected]", "[email protected]"],
  "messageType": "Marketing",
  "mailingListId": null
}
Massenprüfung-Antwort
{
  "suppressedEmails": ["[email protected]"]
}

Unterdrückung hinzufügen

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"}'
Unterdrückung-hinzufügen-Anfrage
{
  "email": "[email protected]",
  "suppressionType": "Manual",
  "scope": "Global",
  "reason": "Customer requested removal from all lists",
  "notes": "Ticket #4521"
}
FeldTypErforderlichStandardBeschreibung
emailstringJa-E-Mail-Adresse (max. 255 Zeichen)
suppressionTypestringNeinManualUnterdrückungstyp
scopestringNeinGlobalUnterdrückungs-Geltungsbereich
mailingListIdstringNein-Die öffentliche ID der Mailingliste, aufgelöst innerhalb Ihres Mandanten. Erforderlich wenn Geltungsbereich List ist; eine unbekannte, fremde oder numerische ID liefert 404.
reasonstringNein-Grund (max. 500 Zeichen)
notesstringNein-Interne Notizen

Gibt 201 Created mit dem vollständigen Unterdrückungsobjekt zurück. Der Location-Header lautet /v1/transactional/suppressions: die Listenroute, da es keinen Get-by-ID-Endpunkt gibt. Verwenden Sie das id-Feld im Antwortkörper, um die erstellte Unterdrückung zu identifizieren, sowie die Abschnitte „Unterdrückungen auflisten" oder „Prüfen, ob eine E-Mail unterdrückt ist" weiter unten, um sie nachzuschlagen.

Massenhinzufügung

Fügen Sie bis zu 1.000 Unterdrückungen auf einmal hinzu:

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"}]}'
Massenhinzufügungs-Anfrage
{
  "emails": [
    { "email": "[email protected]", "suppressionType": "Manual", "scope": "Global", "reason": "Cleanup" },
    { "email": "[email protected]", "suppressionType": "Manual", "scope": "Marketing" }
  ]
}
Massenhinzufügungs-Antwort
{
  "totalCount": 2,
  "addedCount": 2,
  "skippedCount": 0,
  "skippedEmails": [],
  "message": "Added 2 suppressions"
}

E-Mails, die bereits in der Unterdrückungsliste vorhanden sind, werden übersprungen (nicht dupliziert).

Import aus CSV

Aus Textinhalt

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-Anfrage
{
  "csvContent": "[email protected]\n[email protected]\n[email protected]",
  "defaultReason": "Imported from legacy system",
  "suppressionType": "Manual",
  "scope": "Global"
}

Aus Datei-Upload

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 und mailingListId sind Query-Parameter, keine Formularfelder: ein Formularfeld mit einem dieser Namen wird stillschweigend ignoriert, sodass ein List-Scope-Import als Formularfeld gesendet mit 400 fehlschlägt. mailingListId ist die öffentliche ID der Liste, aufgelöst innerhalb Ihres Mandanten; eine unbekannte, fremde oder numerische ID liefert 404.

Laden Sie eine .csv-Datei (max. 5 MB) mit E-Mail-Adressen hoch, die durch Kommas oder Zeilenumbrüche getrennt sind. Eine Kopfzeile mit "email" wird automatisch übersprungen.

Query-Parameter:

ParameterTypBeschreibung
filefile (Multipart-Formularfeld)CSV-Datei (max. 5 MB, .csv-Erweiterung erforderlich)
scopestring (Query)Unterdrückungs-Geltungsbereich (Standard: Global)
mailingListIdstring (Query)Die öffentliche ID der Mailingliste, aufgelöst innerhalb Ihres Mandanten. Erforderlich wenn Geltungsbereich List ist; eine unbekannte, fremde oder numerische ID liefert 404.
Import-Ergebnis
{
  "totalRows": 1000,
  "importedCount": 950,
  "skippedCount": 40,
  "invalidCount": 10,
  "invalidEmails": ["not-an-email", "missing-domain@", "..."],
  "errors": [],
  "message": "Imported 950 emails. 40 already existed. 10 invalid."
}

Die Liste invalidEmails zeigt bis zu 10 ungültige Einträge an. Bereits vorhandene E-Mails werden als skippedCount gezählt, nicht als Fehler.

Unterdrückungen exportieren

Laden Sie Ihre Unterdrückungsliste als CSV herunter:

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
ParameterTypBeschreibung
typeSuppressionTypeNach Typ filtern
scopeSuppressionScopeNach Geltungsbereich filtern
mailingListIdstringDie öffentliche ID der Mailingliste, aufgelöst innerhalb Ihres Mandanten. Eine unbekannte, fremde oder numerische ID liefert 404.

Gibt eine CSV-Datei mit den Spalten zurück: email, type, scope, mailing_list, reason, bounce_count, source, created_at, expires_at. Begrenzt auf 100.000 Zeilen.

Unterdrückung entfernen

Nach ID

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..."

Nach E-Mail

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..."
ParameterTypBeschreibung
emailstringE-Mail-Adresse zur Aufhebung der Unterdrückung (erforderlich)
scopeSuppressionScopeNur für diesen Geltungsbereich entfernen
mailingListIdstringNur für diese Mailingliste entfernen: ihre öffentliche ID, aufgelöst innerhalb Ihres Mandanten. Eine unbekannte, fremde oder numerische ID liefert 404.

Gibt bei Erfolg 204 No Content zurück, 404 wenn nicht gefunden.

Gesperrte Unterdrückungen

Bestimmte Unterdrückungen können nicht gelöscht werden, um Ihre Absenderreputation zu schützen und Anti-Spam-Vorschriften einzuhalten:

Gesperrter TypGrund
ComplaintSpam-Beschwerde: Compliance-Anforderung
SpamTrapBekannte Spam-Trap: Zustellbarkeitsschutz
Abmeldung über FeedbackLoopISP-Feedback-Loop
Abmeldung über OneClickRFC 8058 Ein-Klick-Abmeldung
Abmeldung über ManualLinkVom Benutzer bestätigte Abmeldung
Abmeldung über PreferenceAuswahl im Einstellungscenter

Der Versuch, eine gesperrte Unterdrückung zu löschen, gibt Folgendes zurück:

403 Forbidden
{
  "code": "SUPPRESSION_LOCKED",
  "message": "Cannot delete: Spam complaint - compliance requirement",
  "details": {
    "lockedReason": "Spam complaint - compliance requirement"
  }
}

Das Löschen beschwerdebasierter Unterdrückungen und das erneute Senden an diese Adressen schadet Ihrer Absenderreputation und kann gegen Anti-Spam-Gesetze verstoßen. Diese Unterdrückungen sind zu Ihrem Schutz gesperrt.

Abmeldequellen

Wenn sich ein Empfänger abmeldet, wird die Quelle erfasst:

QuelleWertBeschreibungGesperrt
ListUnsubscribeHeader0RFC 8058 List-Unsubscribe-HeaderNein
ListUnsubscribeMail1mailto:-AbmeldungNein
WebForm2Web-AbmeldeseiteNein
Api3API-AufrufNein
Admin4Admin-PanelNein
FeedbackLoop5ISP-Feedback-LoopJa
OneClick6RFC 8058 POST Ein-KlickJa
ManualLink7Vom Benutzer über Link bestätigtJa
Preference8Auswahl im EinstellungscenterJa

Fehlerantworten

StatusCodeBeschreibung
400INVALID_REQUESTValidierungsfehler (ungültige E-Mail, Geltungsbereich oder Typ)
400INVALID_EMAIL_FORMATE-Mail-Adressformat ist ungültig
400CONTENT_TOO_LARGECSV-Datei überschreitet 5 MB
403SUPPRESSION_LOCKEDGesperrte Unterdrückung kann nicht gelöscht werden
404RESOURCE_NOT_FOUNDUnterdrückung nicht gefunden, oder eine angegebene mailingListId benennt keine Mailingliste in Ihrem Mandanten

Nächste Schritte

  • Bounces: Bounce-Typen und automatische Unterdrückung verstehen
  • Zustellbarkeitsübersicht: Absenderreputation überwachen
  • Webhook-Events: message.bounced-Events empfangen (suppression.added/suppression.removed sind im Katalog definiert, werden aber heute nicht ausgelöst)

Auf dieser Seite