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
| Typ | Wert | Beschreibung | Standard-Geltungsbereich |
|---|---|---|---|
HardBounce | 1 | Permanenter Zustellfehler | Global (immer) |
SoftBounce | 2 | Vorübergehender Fehler (30-tägige Marketing-Unterdrückung, eskaliert erst nach ≥3 geeigneten Bounces über ≥7 Tage) | Marketing (30 Tage Ablaufzeit) |
Complaint | 3 | Empfänger hat E-Mail als Spam markiert | Global (immer) |
Unsubscribe | 4 | Empfänger hat sich abgemeldet | Abhängig vom Nachrichtentyp |
Manual | 5 | Manuell über API oder Dashboard hinzugefügt | Beliebiger Geltungsbereich |
Invalid | 6 | Ungültiges E-Mail-Format | Global (immer) |
SpamTrap | 7 | Bekannte Spam-Trap-Adresse | Global (immer) |
RoleAddress | 8 | Rollenbasierte E-Mail (info@, admin@ usw.) | Global (immer) |
Unterdrückungs-Geltungsbereiche
Geltungsbereiche steuern, welche Arten von E-Mails blockiert werden:
| Geltungsbereich | Wert | Verhalten |
|---|---|---|
Global | 0 | Blockiert alle E-Mails (transaktional und Marketing) |
Marketing | 1 | Blockiert Marketing-E-Mails; transaktionale E-Mails werden weiterhin zugestellt |
Transactional | 2 | Blockiert nur transaktionale E-Mails (selten) |
List | 3 | Blockiert E-Mails nur für eine bestimmte Mailingliste |
Geltungsbereichs-Einschränkungen:
HardBounce,Complaint,Invalid,SpamTrap,RoleAddress→ nur globaler GeltungsbereichSoftBounce→ typischerweise Marketing-GeltungsbereichUnsubscribe→ Global, Marketing oder List (nicht Transactional)Manual→ beliebiger Geltungsbereich
Unterdrückungen auflisten
GET https://api.mail.land/v1/transactional/suppressionsAuthentifizierung mit Authorization: Bearer <token> oder X-API-Key: <api key>.
curl https://api.mail.land/v1/transactional/suppressions \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Abfrageparameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
cursor | string | - | Opaker Cursor aus dem nextCursor der vorherigen Seite. Für die erste Seite weglassen. |
limit | int | 50 | Einträge pro Seite (max. 100) |
search | string | - | Nach E-Mail-Adresse filtern |
type | SuppressionType | - | Nach Typ filtern |
scope | SuppressionScope | - | Nach Geltungsbereich filtern |
mailingListId | string | - | Die öffentliche ID der Mailingliste, aufgelöst innerhalb Ihres Mandanten. Eine unbekannte, fremde oder numerische ID liefert 404. |
fromDate | datetime | vor 90 Tagen | Startdatum |
toDate | datetime | Jetzt | Enddatum |
sortBy | string | CreatedAt | Sortierfeld |
sortDescending | bool | true | Sortierrichtung |
{
"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/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"
}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=Marketingcurl "https://api.mail.land/v1/transactional/suppressions/[email protected]&messageType=Marketing" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
email | string | - | E-Mail-Adresse (erforderlich) |
messageType | string | Marketing | Marketing oder Transactional |
mailingListId | string | - | Die öffentliche ID der Mailingliste, aufgelöst innerhalb Ihres Mandanten. Eine unbekannte, fremde oder numerische ID liefert 404. |
{
"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-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]"]
}Unterdrückung hinzufügen
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"
}| Feld | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
email | string | Ja | - | E-Mail-Adresse (max. 255 Zeichen) |
suppressionType | string | Nein | Manual | Unterdrückungstyp |
scope | string | Nein | Global | Unterdrückungs-Geltungsbereich |
mailingListId | string | Nein | - | Die öffentliche ID der Mailingliste, aufgelöst innerhalb Ihres Mandanten. Erforderlich wenn Geltungsbereich List ist; eine unbekannte, fremde oder numerische ID liefert 404. |
reason | string | Nein | - | Grund (max. 500 Zeichen) |
notes | string | Nein | - | 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/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"
}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/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"
}Aus Datei-Upload
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 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:
| Parameter | Typ | Beschreibung |
|---|---|---|
file | file (Multipart-Formularfeld) | CSV-Datei (max. 5 MB, .csv-Erweiterung erforderlich) |
scope | string (Query) | Unterdrückungs-Geltungsbereich (Standard: Global) |
mailingListId | string (Query) | Die öffentliche ID der Mailingliste, aufgelöst innerhalb Ihres Mandanten. Erforderlich wenn Geltungsbereich List ist; eine unbekannte, fremde oder numerische ID liefert 404. |
{
"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/exportcurl https://api.mail.land/v1/transactional/suppressions/export \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-o suppressions.csv| Parameter | Typ | Beschreibung |
|---|---|---|
type | SuppressionType | Nach Typ filtern |
scope | SuppressionScope | Nach Geltungsbereich filtern |
mailingListId | string | Die ö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}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]curl -X DELETE "https://api.mail.land/v1/transactional/suppressions/[email protected]" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."| Parameter | Typ | Beschreibung |
|---|---|---|
email | string | E-Mail-Adresse zur Aufhebung der Unterdrückung (erforderlich) |
scope | SuppressionScope | Nur für diesen Geltungsbereich entfernen |
mailingListId | string | Nur 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 Typ | Grund |
|---|---|
Complaint | Spam-Beschwerde: Compliance-Anforderung |
SpamTrap | Bekannte Spam-Trap: Zustellbarkeitsschutz |
Abmeldung über FeedbackLoop | ISP-Feedback-Loop |
Abmeldung über OneClick | RFC 8058 Ein-Klick-Abmeldung |
Abmeldung über ManualLink | Vom Benutzer bestätigte Abmeldung |
Abmeldung über Preference | Auswahl im Einstellungscenter |
Der Versuch, eine gesperrte Unterdrückung zu löschen, gibt Folgendes zurück:
{
"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:
| Quelle | Wert | Beschreibung | Gesperrt |
|---|---|---|---|
ListUnsubscribeHeader | 0 | RFC 8058 List-Unsubscribe-Header | Nein |
ListUnsubscribeMail | 1 | mailto:-Abmeldung | Nein |
WebForm | 2 | Web-Abmeldeseite | Nein |
Api | 3 | API-Aufruf | Nein |
Admin | 4 | Admin-Panel | Nein |
FeedbackLoop | 5 | ISP-Feedback-Loop | Ja |
OneClick | 6 | RFC 8058 POST Ein-Klick | Ja |
ManualLink | 7 | Vom Benutzer über Link bestätigt | Ja |
Preference | 8 | Auswahl im Einstellungscenter | Ja |
Fehlerantworten
| Status | Code | Beschreibung |
|---|---|---|
400 | INVALID_REQUEST | Validierungsfehler (ungültige E-Mail, Geltungsbereich oder Typ) |
400 | INVALID_EMAIL_FORMAT | E-Mail-Adressformat ist ungültig |
400 | CONTENT_TOO_LARGE | CSV-Datei überschreitet 5 MB |
403 | SUPPRESSION_LOCKED | Gesperrte Unterdrückung kann nicht gelöscht werden |
404 | RESOURCE_NOT_FOUND | Unterdrü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.removedsind im Katalog definiert, werden aber heute nicht ausgelöst)