Zuletzt aktualisiert: 2026-03-036 Min. Lesezeit

E-Mail-Bounce- und Rejection-Gründe

Wenn eine E-Mail nicht zugestellt werden kann, gibt der empfangende Mailserver einen Fehlergrund zurück. Truncus normalisiert diese in deterministische terminale Status.

Terminale Status

StatusBedeutung
deliveredMailbox hat die Nachricht akzeptiert
bouncedZustellung nach Transportversuch fehlgeschlagen
rejectedNachricht vor Zustellversuch abgelehnt

Fehlergründe

GrundBedeutungTypischer SMTP-CodeEmpfohlene Maßnahme
mailbox_fullPostfachspeicher überschritten552Später erneut versuchen
user_unknownAdresse existiert nicht550Adresse entfernen
domain_not_foundDomain-DNS nicht auflösbarNXDOMAINAdresse entfernen
spam_blockedVom Spamfilter abgelehnt554Domain-Reputation prüfen
policy_blockDomain-Policy-Ablehnung550Absender-Konfiguration prüfen
temporary_failureTransientes Zustellungsproblem451Später erneut versuchen
connection_timeoutEmpfänger-Server nicht erreichbarSpäter erneut versuchen
suppression_listAdresse zuvor gebouncedNicht erneut versuchen

mailbox_full

Das Postfach des Empfängers hat sein Speicherkontingent überschritten.

{ "status": "bounced", "reason": "mailbox_full" }

Dies ist ein Soft-Bounce — ein vorübergehender Zustand. Nach einer Verzögerung erneut versuchen.

user_unknown

Die E-Mail-Adresse existiert nicht auf dem Empfänger-Server.

{ "status": "bounced", "reason": "user_unknown" }

Dies ist ein Hard-Bounce. Adresse dauerhaft entfernen und nicht erneut versuchen.

suppression_list

Die Adresse befindet sich auf Truncus' Unterdrückungsliste — sie hat zuvor einen Hard-Bounce oder eine Spam-Beschwerde generiert.

{ "status": "rejected", "reason": "suppression_list" }

Nicht erneut versuchen.

Fehler programmatisch behandeln

const response = await truncus.emails.send({ to, from, subject, html })

switch (response.status) {
  case 'delivered':
    break

  case 'bounced':
    if (['user_unknown', 'domain_not_found'].includes(response.reason)) {
      await removeEmailAddress(to)
    } else {
      await scheduleRetry(to, response.reason)
    }
    break

  case 'rejected':
    if (response.reason === 'suppression_list') {
      await markAddressSuppressed(to)
    }
    break
}

Quickstart — Zustellungsstatus in der Praxis

E-Mail Bounce- und Ablehnungsgründe