Multipart Email — Text + HTML (EML)
A multipart/alternative email carrying both a plain-text and an HTML body — for testing MIME part selection, HTML-part handling and sanitising, and multipart parsing.
Content-Type: multipart/alternative; boundary="=_alt_0002000000000000"
MIME-Version: 1.0
From: Maya Chen <maya@brightside.example>
To: Sam Rivera <sam@meridiansupply.example>
Subject: Re: Your quote Q-2026-0148
Date: Thu, 15 Jan 2026 09:30:00 -0800
Message-ID: <0002-alt@brightside.example>
--=_alt_0002000000000000
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
SGkgTWF5YSwKCkdyZWF0IOKAlCBvcmRlciBjb25maXJtZWQuIFRoZSBpbnZvaWNlIChJTlYtMDAw
MSkgaXMgYXR0YWNoZWQgdG8gdGhlIGFjY291bnQgYW5kCnRoZSBnb29kcyBzaGlwIE1vbmRheS4g
UGFwZXIgYW5kIGdsb3ZlcyB3aWxsIHRyYXZlbCBpbiB0aGUgc2FtZSBzaGlwbWVudC4KClRoYW5r
cyBmb3IgeW91ciBidXNpbmVzcyEKU2FtCk1lcmlkaWFuIFN1cHBseSBDby4K
--=_alt_0002000000000000
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
PGh0bWw+PGJvZHkgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7Y29sb3I6IzE4
MTgxYiI+PHA+SGkgTWF5YSw8L3A+PHA+R3JlYXQgJm1kYXNoOyA8c3Ryb25nPm9yZGVyIGNvbmZp
cm1lZDwvc3Ryb25nPi4gVGhlIGludm9pY2UgKElOVi0wMDAxKSBpcyBvbiB0aGUgYWNjb3VudCBh
bmQgdGhlIGdvb2RzIHNoaXAgPHN0cm9uZz5Nb25kYXk8L3N0cm9uZz4uIFBhcGVyIGFuZCBnbG92
ZXMgd2lsbCB0cmF2ZWwgaW4gdGhlIHNhbWUgc2hpcG1lbnQuPC9wPjxwPlRoYW5rcyBmb3IgeW91
ciBidXNpbmVzcyE8YnI+U2FtPGJyPjxzcGFuIHN0eWxlPSJjb2xvcjojMDU5NjY5Ij5NZXJpZGlh
biBTdXBwbHkgQ28uPC9zcGFuPjwvcD48L2JvZHk+PC9odG1sPg==
--=_alt_0002000000000000--
Specifications
- Format
- RFC 822 MIME
- Structure
- multipart/alternative
- Parts
- text/plain + text/html
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
“Multipart Email — Text + HTML (EML)” is a deterministic Novus Examples fixture for Email parsing, Conversion testing, Editor 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: RFC 822 MIME · multipart/alternative. 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("multipart-alternative.eml", "rb"))
print(msg["subject"], msg["from"])Related files
- mboxMBOX Mailbox (three-message thread)An mbox mailbox concatenating a short three-message email thread with the classic 'From ' separator lines and >From body escaping — for testing mailbox splitting and thread reconstruction.

- emlBounce / Non-Delivery Report (EML)A bounce / non-delivery report (NDR) — a multipart/report message with a human-readable notice, a message/delivery-status part, and the original headers — for testing bounce parsing and delivery-status extraction.

- 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 — Attachment With No Filename At AllAn attachment with a bare Content-Disposition: attachment and no name in either header. A client has to invent a filename, and the extension it invents decides whether the saved file opens as a spreadsheet or as unknown binary.

- emlEML — Base64: Accented UTF-8 BodyA base64 text/plain message in utf-8 carrying the identical body to the quoted-printable twin beside it. Base64 is opaque to whitespace and line-start characters, so it is the reference side of the pair when a QP decoder is suspect.

- emlEML — Base64: From-Line and Lone DotA base64 text/plain message in utf-8 carrying the identical body to the quoted-printable twin beside it. Base64 is opaque to whitespace and line-start characters, so it is the reference side of the pair when a QP decoder is suspect.

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