# SMPP-Zustellberichte (DLR): Format

> Ein Zustellbericht (DLR) ist ein deliver_sm, dessen esm_class ihn als Bericht kennzeichnet. Die short_message trägt einen Text mit festem Format — id, sub, dlvrd, submit date, done date, stat, err, Text — definiert in SMPP v3.4 Appendix B. Das Feld stat (DELIVRD, EXPIRED, UNDELIV, REJECTD …) ist der Endstatus der Nachricht.

- Kanonische URL: https://www.broadnet.me/de/reference/smpp-delivery-receipts-dlr
- Sprache: de
- Zuletzt aktualisiert: 2026-07-18
- Herausgeber: BroadNet (https://www.broadnet.me)

Das Zustellbericht-Textformat gemäß Appendix B innerhalb von deliver_sm: id, sub, dlvrd, submit date, done date, stat, err und Text — plus die stat-Schlüsselwörter und ihre message_state-Nummern.

## Der Berichtstext gemäß Appendix B

Wenn das SMSC das Ergebnis einer Nachricht meldet, sendet es ein deliver_sm mit gesetztem Bericht-Bit in esm_class (0x04) und legt einen strukturierten Text-String in short_message ab. Das Format ist in Appendix B der v3.4-Spezifikation definiert. Jedes Feld ist ein Schlüssel gefolgt von einem Wert; das Feld id verknüpft den Bericht mit der message_id aus Ihrem submit_sm_resp.

*Ein zugestellter Bericht (Inhalt von short_message)*

```text
id:0a1b2c3d4e sub:001 dlvrd:001 submit date:2607181432 done date:2607181433 stat:DELIVRD err:000 Text:Your code is 4
```

## Feld für Feld

Der Bericht ist kompakt, aber jedes Feld zählt für die Abstimmung. Datumsangaben verwenden das Format YYMMDDhhmm. sub und dlvrd zählen eingereichte und zugestellte Segmente. stat ist der siebenstellige Endzustand. err ist ein netz-/SMSC-spezifischer Fehlercode (000 bei Erfolg). Text sind die ersten 20 Zeichen der ursprünglichen Nachricht.

*Zustellbericht-Felder (Appendix B)*

| Feld | Bedeutung |
|---|---|
| id | SMSC message_id des ursprünglichen submit_sm |
| sub | Anzahl der übermittelten Kurznachrichten (Segmente) |
| dlvrd | Anzahl der zugestellten Kurznachrichten |
| Übermittlungsdatum | Zeitpunkt der Nachrichtenübermittlung (YYMMDDhhmm) |
| Abschlussdatum | Zeitpunkt, zu dem die Nachricht ihren Endstatus erreichte (YYMMDDhhmm) |
| stat | Endgültiger Nachrichtenstatus – 7-Zeichen-Schlüsselwort (siehe unten) |
| err | Netzwerk-/SMSC-spezifischer Fehlercode (000 = keiner) |
| Text | Die ersten 20 Zeichen der Originalnachricht |

## stat-Schlüsselwörter und message_state-Nummern

Das stat-Schlüsselwort ist der menschenlesbare Endstatus; das message_state-TLV (0x0427) trägt dieselbe Information als Zahl. Behandeln Sie DELIVRD als den einzigen eindeutigen Erfolg; EXPIRED, UNDELIV, REJECTD, DELETED und UNKNOWN sind endgültige Fehlschläge. ACCEPTD und ENROUTE sind nicht endgültig und sollten eine Nachricht nicht abschließen.

*stat-Schlüsselwörter ↔ message_state*

| stat | message_state | Final? | Bedeutung |
|---|---|---|---|
| ENROUTE | 1 | No | Unterwegs |
| DELIVRD | 2 | Ja | An Mobiltelefon zugestellt |
| EXPIRED | 3 | Ja | Gültigkeitszeitraum abgelaufen |
| DELETED | 4 | Ja | Nachricht gelöscht |
| UNDELIV | 5 | Ja | Nicht zustellbar |
| ACCEPTD | 6 | No | Akzeptiert / manuell gelesen |
| UNKNOWN | 7 | Ja | Zustand unbekannt |
| REJECTD | 8 | Ja | Vom Netz abgelehnt |

## Sicheres Parsen

Parsen Sie den Bericht aus der short_message des deliver_sm, korrelieren Sie aber über das receipted_message_id-TLV (0x001E) statt nur über den id-Text, und normalisieren Sie Hex- gegenüber Dezimal-ID-Formaten. Unterscheiden Sie Zwischenberichte (esm_class-Bit für Zwischenbenachrichtigung) von Endzuständen und bilden Sie den err-Code auf eine normalisierte Taxonomie ab — abwesender Teilnehmer, Endgerät belegt, als Spam blockiert, ungültige Nummer — da rohe err-Werte je Route variieren. Antworten Sie stets mit deliver_sm_resp.

## Häufige Fragen

### Was bedeutet stat:DELIVRD?

DELIVRD ist der Endstatus, der bedeutet, dass die Nachricht das Endgerät des Empfängers erreicht hat. Er entspricht message_state 2 und ist der einzige stat-Wert, der eindeutig Erfolg darstellt.

### Wo in der PDU steht der Zustellbericht-Text?

Im Feld short_message eines deliver_sm, dessen esm_class das Zustellbericht-Bit (0x04) gesetzt hat. Der Text folgt dem Format aus Appendix B: id, sub, dlvrd, submit date, done date, stat, err, Text.

### Was ist das err-Feld in einem DLR?

err ist ein netz- oder SMSC-spezifischer Fehlercode, der den Grund einer Nichtzustellung angibt (000 bedeutet keiner). Da die Werte je Route unterschiedlich sind, bilden Sie sie für eine einheitliche Qualitätsberichterstattung auf eine normalisierte interne Taxonomie ab.

### Warum stimmt meine DLR-id nicht mit meiner submit_sm_resp-message_id überein?

Meist eine Formatabweichung: Manche SMSCs geben die message_id im submit_sm_resp hexadezimal, im Bericht aber dezimal zurück (oder umgekehrt). Normalisieren Sie beide auf eine Darstellung, bevor Sie vergleichen, und bevorzugen Sie das receipted_message_id-TLV.

### Sind alle Zustellberichte endgültig?

Nein. ENROUTE und ACCEPTD sind Zwischenzustände, und manche Netze senden Zwischenbenachrichtigungen. Schließen Sie eine Nachricht nur bei einem endgültigen stat wie DELIVRD, EXPIRED, UNDELIV, REJECTD, DELETED oder UNKNOWN ab.

## Quellen

- [SMPP v3.4 specification — Appendix B (delivery receipt)](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)
- [3GPP TS 23.040 — SMS status report](https://www.3gpp.org/dynareport/23040.htm)

## Verwandte Seiten

- [DLR-Decoder (kostenloses Tool)](https://www.broadnet.me/de/tools/dlr-decoder)
- [SMPP deliver_sm & MO-Nachrichten](https://www.broadnet.me/de/reference/smpp-deliver-sm)
- [Optionale SMPP-TLV-Parameter](https://www.broadnet.me/de/reference/smpp-tlv-parameters)
- [SMPP-Integrations-Checkliste (Leitfaden)](https://www.broadnet.me/de/guides/smpp-integration-checklist)
- [SMS API Produkt](https://www.broadnet.me/de/products/sms-api)
