EML — Threaded References Headers
A reply carrying In-Reply-To and References headers — for email thread reconstructors.
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
From: Ada <ada@meridiansupply.example>
To: Ben <ben@meridiansupply.example>
Subject: Re: SAMPLE project kickoff
Date: Sat, 10 Jan 2026 16:00:00 -0800
Message-ID: <thread-3@meridiansupply.example>
In-Reply-To: <thread-2@meridiansupply.example>
References: <thread-1@meridiansupply.example>
<thread-2@meridiansupply.example>
UmU6IFNBTVBMRSB0aHJlYWQg4oCUIHRoaXJkIHJlcGx5Lgo=
Specifications
- In Reply To
- present
- References
- two Message-IDs
Testing contract
Reference control- Scenario
- Exercise EML — Threaded References Headers in its headers workflow. A reply carrying In-Reply-To and References headers — for email thread reconstructors.
- Expected result
- subject='Re: SAMPLE project kickoff'; content type=text/plain; MIME leaf parts=1. Declared feature checks: In-Reply-To=present; References=two Message-IDs.
What is a .eml file?
An EML file is a single email message stored in the RFC 822 / MIME format: plain-text headers (From, To, Subject, Date, Message-ID) followed by the body, which may be plain text, HTML, or a multipart structure with alternative bodies and file attachments encoded in base64.
How to use this file
Use an example EML to test email header parsing, MIME decoding, HTML-part handling, attachment extraction, and EML-to-other-format conversion.
How to use this file for testing
“EML — Threaded References Headers” is a deterministic Novus Examples fixture for Email parsing, Conversion testing. Standards-compliant RFC 822 messages (plain, multipart text+HTML, and with an attachment) plus an MBOX mailbox, for testing header parsing, MIME decoding, attachment extraction, and mailbox splitting.
Documented properties for this file: EML · 468 bytes. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such, expect parsers to fail loudly rather than silently accept them.
Email fixtures use fixed dates, message IDs, and MIME boundaries so runs are reproducible, and every address is fictional. Test header parsing, MIME decoding, attachment extraction, and EML/MBOX conversion against the documented structure.
Code examples
from email import policy
from email.parser import BytesParser
msg = BytesParser(policy=policy.default).parse(open("threaded-reply.eml", "rb"))
print(msg["subject"], msg["from"])Related files
- emlEML — 1,024-Octet Header Line With No Fold PointA single header whose value is one 1,001-character token with no whitespace, making the line 1,024 octets — past the 998-octet limit RFC 5322 sets and impossible to fold. Fixed-size line buffers truncate here, and the truncation is silent.

- emlEML — Encoded-Word With an Unregistered CharsetAn encoded-word naming a charset no registry knows. The payload happens to be UTF-8, so a decoder has a choice: fall back and show readable text, or leave the raw encoded-word visible. What it must not do is raise and drop the whole header.

- emlEML — Header and Body Lines at Exactly 998 OctetsA header line and a body line sitting exactly on the RFC 5322 maximum of 998 octets excluding CRLF. Both are legal, so anything that rejects, wraps, or truncates them is off by one against the spec — this is the reference case for that boundary.

- emlEML — Headers Folded With HTAB ContinuationsTwo headers folded with horizontal tabs instead of spaces, which RFC 5322 permits exactly as it permits spaces. Parsers that test only for a leading space treat the continuation as a brand-new header and lose the second half of the Subject.

- emlEML — References Folded Before Every Message-IDAn eight-deep References chain folded so each Message-ID sits on its own line. There is no comma between msg-ids in this header, so a parser that splits on the line break rather than unfolding first ends up with ids that carry a leading space.

- emlEML — To: Header Folded Across 24 RecipientsA To: header listing 24 addresses, folded after every comma. Address-list parsers that unfold and split in the wrong order produce addresses with a leading space or lose the display name of every recipient after the first.

Generated by generation/email_wave_c.py. Free for any use, no attribution required, license.