EML — multipart/related With Two cid: Images
An HTML body referencing two base64 PNG parts by Content-ID, both resolved. This is the baseline for the three related/cid fixtures beside it: everything a cid resolver needs is present and correctly spelled.
From: Maya Chen <maya@brightside.example>
To: Sam Rivera <sam@meridiansupply.example>
Subject: Your loyalty badge (two inline images)
Date: Wed, 11 Feb 2026 09:00:00 -0800
Message-ID: <p7-rel-two@brightside.example>
MIME-Version: 1.0
Content-Type: multipart/related; type="text/html"; boundary="=_p7_rel_two"
--=_p7_rel_two
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
<html><body><p><img src=3D"cid:logo.p7@brightside.example" width=3D"16" hei=
ght=3D"16" alt=3D"logo"> Brightside Cafe</p><p>Loyalty badge: <img src=3D"c=
id:badge.p7@brightside.example" width=3D"16" height=3D"16" alt=3D"badge"></=
p></body></html>
--=_p7_rel_two
Content-Type: image/png; name="logo.png"
Content-Transfer-Encoding: base64
Content-ID: <logo.p7@brightside.example>
Content-Disposition: inline; filename="logo.png"
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAJElEQVR42mOQkJCGoy9fvsIRLnGG
QaiBGEXI4oNRw2g8DAoNAMVGlBCcw84bAAAAAElFTkSuQmCC
--=_p7_rel_two
Content-Type: image/png; name="badge.png"
Content-Transfer-Encoding: base64
Content-ID: <badge.p7@brightside.example>
Content-Disposition: inline; filename="badge.png"
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAFklEQVR42mPgm5tNEmIY1TCqYfhq
AABu9xYQCHe7pQAAAABJRU5ErkJggg==
--=_p7_rel_two--
Specifications
- Wave
- p7
- Seed
- 20260807
- Structure
- multipart/related
- Root Type
- text/html
- Cid Parts
- 2
- Cids
- logo.p7@brightside.example, badge.p7@brightside.example
- Image Format
- PNG 16x16
- Line Endings
- CRLF (RFC 5322)
Testing contract
Expected to pass- Scenario
- Resolve every cid: URL in an HTML body against the Content-ID headers of sibling parts.
- Expected result
- Both images resolve to 16x16 PNG parts and no cid: URL is left unrewritten in the rendered 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
“EML — multipart/related With Two cid: Images” 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: seed 20260807 · CRLF (RFC 5322) · multipart/related. 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("related-two-cid-images.eml", "rb"))
print(msg["subject"], msg["from"])Related files
- 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.

- emlEML — Base64: ISO-8859-1 BodyA base64 text/plain message in iso-8859-1 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: Soft Line BreaksA 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: Trailing WhitespaceA 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_p7.py. Free for any use, no attribution required — license.