← RFC Reference

RFC 3462: Multipart/Report Content Type

RFC 6522 Delivery Status & Bounce Handling Obsoletes RFC 1892 MIMEDSNReporting
ELI5: Imagine a standardized manila folder for mail-related incident reports. The first page is a plain-English summary, the second page is a form with checkboxes and codes a computer can read, and the third page is a photocopy of the original letter. RFC 3462 defined this folder format for email. It has since been replaced by RFC 6522, but the concept is identical.

Why This Exists

When the DSN (Delivery Status Notification) framework was created in the mid-1990s, the authors needed a MIME container that could carry both human-readable and machine-readable content in the same message. Regular multipart/mixed would work structurally, but it provides no semantic signal that the message is an automated report with a specific internal format.

multipart/report solves this by:

RFC 3462 was the second revision of this spec (after RFC 1892). It was later obsoleted by RFC 6522, which tightened the language and updated the IANA registration. The actual wire format did not change — messages conforming to RFC 3462 also conform to RFC 6522.

How It Works

The multipart/report content type works like any MIME multipart, with added constraints:

Content-Type Declaration

Content-Type: multipart/report; report-type=delivery-status;
    boundary="REPORT-BOUNDARY"

The report-type parameter tells the recipient what kind of report this is. The boundary parameter separates the MIME parts, as with any multipart message.

Three-Part Structure

--REPORT-BOUNDARY
Content-Type: text/plain

; Part 1: Human-readable summary
Delivery to user@example.org failed permanently.
The recipient mailbox does not exist.

--REPORT-BOUNDARY
Content-Type: message/delivery-status

; Part 2: Machine-readable report
Reporting-MTA: dns; mx.example.com

Final-Recipient: rfc822;user@example.org
Action: failed
Status: 5.1.1

--REPORT-BOUNDARY
Content-Type: text/rfc822-headers

; Part 3: Original message headers (optional)
From: sender@example.com
To: user@example.org
Subject: Hello
Message-ID: <msg-001@example.com>

--REPORT-BOUNDARY--

Key Technical Details

Report Types Defined Over Time

When RFC 3462 was published, only delivery-status existed. Later RFCs added more report types that all use the same multipart/report container:

report-type Purpose Defined By
delivery-status Bounce / delivery notifications RFC 3464
disposition-notification Read receipts (MDN) RFC 8098
feedback-report Spam complaints (ARF) RFC 5965
tlsrpt TLS negotiation failures RFC 8460

Minimum Parts Required

RFC 3462 requires at least two parts: the human-readable summary and the machine-readable report. The third part (original message) is optional but strongly recommended for DSNs, as it lets the sender identify which message bounced.

Relationship to RFC 6522

RFC 6522 obsoletes this document. The changes are editorial, not behavioral:

If your code already handles RFC 3462 correctly, it handles RFC 6522 too. The wire format is unchanged.

Common Mistakes

Deliverability Impact

Related RFCs