HTML Newsletter Email (EML)
An HTML newsletter email (multipart/alternative) with a table-based responsive layout and a List-Unsubscribe header — for testing HTML-email rendering, sanitising, and marketing-email parsing.
Content-Type: multipart/alternative; boundary="=_nl_0001000000000000"
MIME-Version: 1.0
From: Brightside Cafe <news@brightside.example>
To: Sam Rivera <sam@meridiansupply.example>
Subject: =?utf-8?q?Brightside_Cafe_=E2=80=94_January_News?=
Date: Mon, 05 Jan 2026 08:00:00 -0800
Message-ID: <nl-2026-01@brightside.example>
List-Unsubscribe: <https://brightside.example/unsub>,
<mailto:unsub@brightside.example>
--=_nl_0001000000000000
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
QnJpZ2h0c2lkZSBDYWZlIOKAlCBKYW51YXJ5IE5ld3MKCk5ldyB3aW50ZXIgbWVudSwgZXh0ZW5k
ZWQgd2Vla2VuZCBob3VycywgYW5kIGEgbG95YWx0eSBkb3VibGUtcG9pbnRzIHdlZWsuClZpc2l0
IGJyaWdodHNpZGUuZXhhbXBsZSB0byByZWFkIG1vcmUuCgpVbnN1YnNjcmliZTogYnJpZ2h0c2lk
ZS5leGFtcGxlL3Vuc3ViCg==
--=_nl_0001000000000000
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
PGh0bWw+PGJvZHkgc3R5bGU9Im1hcmdpbjowO2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7
YmFja2dyb3VuZDojZjRmNGY1Ij48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBj
ZWxsc3BhY2luZz0iMCI+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjU2MCIg
c3R5bGU9ImJhY2tncm91bmQ6I2ZmZiI+PHRyPjx0ZCBzdHlsZT0iYmFja2dyb3VuZDojMGU5ZDZi
O2NvbG9yOiNmZmY7cGFkZGluZzoyMHB4Ij48aDEgc3R5bGU9Im1hcmdpbjowO2ZvbnQtc2l6ZToy
MnB4Ij5CcmlnaHRzaWRlIENhZmU8L2gxPjxwIHN0eWxlPSJtYXJnaW46NHB4IDAgMCI+SmFudWFy
eSBOZXdzPC9wPjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSJwYWRkaW5nOjIwcHg7Y29sb3I6IzE4
MTgxYiI+PGgyPk5ldyB3aW50ZXIgbWVudTwvaDI+PHA+U2Vhc29uYWwgZHJpbmtzIGFuZCBwYXN0
cmllcyBhcmUgYmFjay48L3A+PGgyPkV4dGVuZGVkIHdlZWtlbmQgaG91cnM8L2gyPjxwPk9wZW4g
dW50aWwgOHBtIEZyaWRheeKAk1N1bmRheS48L3A+PGgyPkRvdWJsZSBwb2ludHMgd2VlazwvaDI+
PHA+RWFybiAyw5cgbG95YWx0eSBwb2ludHMgYWxsIG5leHQgd2Vlay48L3A+PHA+PGEgaHJlZj0i
aHR0cHM6Ly9icmlnaHRzaWRlLmV4YW1wbGUiIHN0eWxlPSJjb2xvcjojMGU5ZDZiIj5SZWFkIG1v
cmUgJnJhcnI7PC9hPjwvcD48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0icGFkZGluZzoxNHB4O2Jh
Y2tncm91bmQ6I2Y0ZjRmNTtjb2xvcjojNzE3MTdhO2ZvbnQtc2l6ZToxMnB4Ij5Zb3UgYXJlIHJl
Y2VpdmluZyB0aGlzIHNhbXBsZSBuZXdzbGV0dGVyLiA8YSBocmVmPSJodHRwczovL2JyaWdodHNp
ZGUuZXhhbXBsZS91bnN1YiI+VW5zdWJzY3JpYmU8L2E+LjwvdGQ+PC90cj48L3RhYmxlPjwvdGQ+
PC90cj48L3RhYmxlPjwvYm9keT48L2h0bWw+
--=_nl_0001000000000000--
Specifications
- Structure
- multipart/alternative
- Parts
- text/plain + text/html
- Headers
- List-Unsubscribe
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
“HTML Newsletter Email (EML)” 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: 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("newsletter.eml", "rb"))
print(msg["subject"], msg["from"])Related files
- emlOrder Receipt Email (EML)An order-confirmation / receipt email (multipart/alternative) with an itemised order table in both text and HTML — a transactional-email fixture for testing parsing and data extraction.

- 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.

- emlEmail with Attachment (EML)A multipart/mixed email with a base64-encoded CSV file attachment — for testing attachment detection, decoding, and extraction from an EML message.

- 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.

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