Structured Quoted Content
draft-ietf-sml-structured-quoted-content-00
| Document | Type | Active Internet-Draft (sml WG) | |
|---|---|---|---|
| Authors | Phillip Tao , Arnt Gulbrandsen , Ben Bucksch | ||
| Last updated | 2026-07-06 | ||
| Replaces | draft-tao-sml-structured-quoted-content | ||
| RFC stream | Internet Engineering Task Force (IETF) | ||
| Intended RFC status | (None) | ||
| Formats | |||
| Additional resources | Mailing list discussion | ||
| Stream | WG state | WG Document | |
| Document shepherd | (None) | ||
| IESG | IESG state | I-D Exists | |
| Consensus boilerplate | Unknown | ||
| Telechat date | (None) | ||
| Responsible AD | (None) | ||
| Send notices to | (None) |
draft-ietf-sml-structured-quoted-content-00
Structured Email P. Tao
Internet-Draft Apple Inc.
Intended status: Standards Track A. Gulbrandsen
Expires: 7 January 2027 ICANN
B. Bucksch
Beonex
6 July 2026
Structured Quoted Content
draft-ietf-sml-structured-quoted-content-00
Abstract
This document describes a machine-readable format for conveying
quoted content in email messages. This can be used when replying to
or forwarding an email message.
Structured quoted content is expected to be used in conjunction with
conventional, human-readable quote formatting. They are based on the
forthcoming "structured email" specification defined in [I-D.ietf-
sml-structured-email-03] and related drafts.
About This Document
This note is to be removed before publishing as an RFC.
The latest revision of this draft can be found at
https://ptao.github.io/id-structured-quoted-content/draft-tao-sml-
structured-quoted-content.html. Status information for this document
may be found at https://datatracker.ietf.org/doc/draft-ietf-sml-
structured-quoted-content/.
Discussion of this document takes place on the Structured Email
Working Group mailing list (mailto:sml@ietf.org), which is archived
at https://mailarchive.ietf.org/arch/browse/sml/. Subscribe at
https://www.ietf.org/mailman/listinfo/sml/.
Source for this draft and an issue tracker can be found at
https://github.com/ptao/id-structured-quoted-content.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Tao, et al. Expires 7 January 2027 [Page 1]
Internet-Draft Structured Quoted Content July 2026
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 7 January 2027.
Copyright Notice
Copyright (c) 2026 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Conventions and Definitions . . . . . . . . . . . . . . . . . 4
3. Structured Email Format . . . . . . . . . . . . . . . . . . . 4
3.1. Structured Data Type . . . . . . . . . . . . . . . . . . 4
3.2. Vocabularies . . . . . . . . . . . . . . . . . . . . . . 4
4. JSON-LD Objects . . . . . . . . . . . . . . . . . . . . . . . 4
5. HTML Format . . . . . . . . . . . . . . . . . . . . . . . . . 6
6. Backwards Compatibility . . . . . . . . . . . . . . . . . . . 6
7. MUA Guidance . . . . . . . . . . . . . . . . . . . . . . . . 7
8. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 7
8.1. Example 1: Forward Containing a Nested Quote . . . . . . 8
8.1.1. HTML Part . . . . . . . . . . . . . . . . . . . . . . 8
8.1.2. JSON-LD Part . . . . . . . . . . . . . . . . . . . . 9
8.2. Example 2: Reply with Inline Comment . . . . . . . . . . 13
8.2.1. HTML Part . . . . . . . . . . . . . . . . . . . . . . 13
8.2.2. JSON-LD Part . . . . . . . . . . . . . . . . . . . . 14
8.3. Example 3: Quote Chain including Non-Adopter . . . . . . 18
8.3.1. HTML Part . . . . . . . . . . . . . . . . . . . . . . 18
8.3.2. JSON-LD Part . . . . . . . . . . . . . . . . . . . . 19
9. Security Considerations . . . . . . . . . . . . . . . . . . . 23
Tao, et al. Expires 7 January 2027 [Page 2]
Internet-Draft Structured Quoted Content July 2026
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23
11. Normative References . . . . . . . . . . . . . . . . . . . . 23
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 23
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23
1. Introduction
Email messages often content quoted sections of earlier email
messages, typically as part of a reply or a forwarded message. The
presentation is entirely determined by the sending MUA. Though
various conventions have evolved around this quoting, the behavior is
still largely unstandardized, and behavior differs widely between
MUAs.
Some notable differences include:
* Where newly authored content may be inserted relative to the
quoted content.
- Some MUAs allow inserting new content only above the quoted
message, while some allow inserting new content inline between
blocks of quoted text.
* The formatting used to denote the quoted section.
* Whether some set of headers are also quoted, or whether an
attribution line or preamble is inserted.
- Whether the headers, attribution line, or preamble are
localized into the sender's device language.
* Whether attachments are included in the quoted content.
Due to the above, an email chain in a user's inbox may involve a wide
mix of differing quoting styles, which can be visually disorienting.
The goal of this draft is to introduce a standardized way to
structure quoted content in message replies and forwarded messages.
This allows the sending MUA to annotate the various components of the
quoted content in such a way that the receiving MUA can then apply a
consistent presentation across all messages.
Tao, et al. Expires 7 January 2027 [Page 3]
Internet-Draft Structured Quoted Content July 2026
2. Conventions and Definitions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
3. Structured Email Format
3.1. Structured Data Type
All quoted content will be transmitted as "Partial representation" as
defined by https://datatracker.ietf.org/doc/html/draft-ietf-sml-
structured-email-05#name-partial-representation.
3.2. Vocabularies
Structured Quoted Content uses the SchemaOrg vocabulary, as well as a
custom vocabulary to be defined at *INSERT LINK*.
4. JSON-LD Objects
Structured Quoted Content uses the following object types.
*EmailMessage*
* vocabulary: schema.org and sml.draft.iana.org
* id format: "mid:<message-id header>"
* The following properties can be set: sender, toRecipient, dateSent, dateReceived, about (subject)
* Each property should have its own id
*QuotedContent*
Tao, et al. Expires 7 January 2027 [Page 4]
Internet-Draft Structured Quoted Content July 2026
* vocabulary: sml.draft.iana.org
* id format: "quoted-content:<UUID>"
* Properties:
* message
* References EmailMessage which this item is quoting
* preamble
* References ForwardPreamble
* optional; present on forwarded messages
* headerBlock
* References QuotedHeaderBlock
* optional
* attribution
* References QuoteAttribution
* optional
* content
* References one or more TextContent or QuotedContent
*QuotedHeaderBlock*
* vocabulary: sml.draft.iana.org
* id format: "quoted-header-block:<UUID>"
* Properties:
* header
* References one or more QuotedHeader
*QuotedHeader*
* vocabulary: sml.draft.iana.org
* id format: "quoted-header:<UUID>"
* Properties:
* label
* Text label for the header
* value
* References one of the properties of an EmailMessage
*QuoteAttribution*
* vocabulary: sml.draft.iana.org
* id format: "quote-attribution:<UUID>"
* Properties:
* date
* References either the dateSent or dateReceived property of an EmailMessage
* from
* References the sender property of an Emailmessage
*TextContent*
Tao, et al. Expires 7 January 2027 [Page 5]
Internet-Draft Structured Quoted Content July 2026
* vocabulary: sml.draft.iana.org
* id format: "text-content:<UUID>"
* Properties:
Note, TextContent has no properties.
*ForwardPreamble*
* vocabulary: sml.draft.iana.org
* id format: "forward-preamble:<UUID>"
* Properties:
Note, ForwardPreamble has no properties.
5. HTML Format
Each quoted block will be wrapped in an HTML element (typically div
or span) with a data-source-id and a data-id property. The data-
source-id is a cid: URI referencing the MIME part which contains the
structured data definitions. The data-id is the id of the matching
element.
6. Backwards Compatibility
In a long reply chain, not all MUAs involved may be SML-aware. This
results in two types of mixed content: 1. A MUA which is compliant
with Structured Quoted Content quoting a message which does not have
Structured Quoted Content. 1. A MUA which is not aware of Structured
Quoted Content quoting a message which has Structured Quoted Content.
In the first case, the MUA SHOULD NOT try to retroactively determine
the quoted content structure of the email it is quoting. In other
words, it SHOULD NOT attempt to parse the HTML formatting of that
message in order to build a structured representation. Instead, any
structured quoted content that it generates should treat the quoted
message as one having no quoted content itself.
The MUA in the second situation is by definition not bound to any
behavior specified in this draft. It may likely do one or both of
the following: 1. Modify the HTML in such a way that the existing
structured content properties no longer behave as expected. 2.
Modify the MIME structure in such a way that the structured quoted
content is no longer valid. For example it may: * Change the MIME
structure in such a way that the message is no longer classified as a
"partial representation". * Remove or modify the application/ld+json
part.
Tao, et al. Expires 7 January 2027 [Page 6]
Internet-Draft Structured Quoted Content July 2026
In general, it can be assumed that for a message which contains
Structured Quoted Content, the Structured Quoted Content represents
the most recent contiguous set of messages. This set of messages may
be a subset of all the messages which actually comprise the quoted
reply chain. Such a case occurs when the oldest message represented
in the Structured Quoted Content has quoted a message sent by a MUA
which was not aware of Structured Quoted Content.
When rendering such a message, only the first contiguous set of
Structured Quoted Content should be treated as Structured Quoted
Content. Any HTML or JSON-LD is found which hints at the presence of
Structured Quoted Content further back in the reply chain, but which
has not made it to the receiving MUA intact, should be ignored and
that portion of HTML should be rendered as not containing Structured
Quoted Content.
7. MUA Guidance
TODO: List potential usages/purposes/benefits
Some examples:
* More reliable quoted content parsing/recognition by all compliant
MUAs
* Allow for consistent and localized quoting style (determined by
receiver rather than sender)
* Better condensed display
* Clearer attribution of deeply nested content
* Clearer attribution for inline quoting
8. Examples
The examples in this section illustrate how Structured Quoted Content
is applied across a range of common quoting scenarios. In each
example, the application/ld+json MIME part carries all JSON-LD
objects, its Content-Id is referenced by the data-source-id
attributes in the HTML part, and HTML elements use data-id to
identify their corresponding JSON-LD object.
The label text of each QuotedHeader is the display string rendered by
the sending MUA and may be in any language.
All examples use the following MIME structure, with a unique Content-
Id per message:
Tao, et al. Expires 7 January 2027 [Page 7]
Internet-Draft Structured Quoted Content July 2026
multipart/alternative
├── text/plain
└── multipart/related; type="text/html"
├── text/html
└── application/ld+json
Content-Id: <sml-example@example.com>
8.1. Example 1: Forward Containing a Nested Quote
Alice emails Bob. Bob replies and CCs Carol. Carol forwards Bob's
reply to Dave.
Carol's message has the following structure:
Carol's note
└── Bob's text (the forwarded reply)
└── Alice's text (Bob's nested quote of Alice)
8.1.1. HTML Part
Tao, et al. Expires 7 January 2027 [Page 8]
Internet-Draft Structured Quoted Content July 2026
<!-- Carol's note -->
<div data-source-id="cid:sml-ex1@example.com"
data-id="quoted-content:A1000001-0000-0000-0000-000000000001">
<div data-source-id="cid:sml-ex1@example.com"
data-id="forward-preamble:A1000006-0000-0000-0000-000000000001">
---------- Forwarded message ---------
</div>
<div data-source-id="cid:sml-ex1@example.com"
data-id="quoted-header-block:A1000002-0000-0000-0000-000000000001">
<b>From:</b> Bob Kumar <bob@example.com><br>
<b>Date:</b> Mon, Sep 15, 2025 at 2:23 PM<br>
<b>Subject:</b> Re: Lorem ipsum<br>
<b>To:</b> Alice Chen <alice@example.com><br>
</div>
<blockquote>
<div data-source-id="cid:sml-ex1@example.com"
data-id="text-content:A1000004-0000-0000-0000-000000000001">
<!-- Bob's reply text -->
</div>
<div data-source-id="cid:sml-ex1@example.com"
data-id="quoted-content:A1000001-0000-0000-0000-000000000002">
<blockquote type="cite">
<div data-source-id="cid:sml-ex1@example.com"
data-id="quote-attribution:A1000005-0000-0000-0000-000000000001">
On Sep 15, 2025, at 9:47 AM, Alice Chen <alice@example.com> wrote:
</div>
<div data-source-id="cid:sml-ex1@example.com"
data-id="text-content:A1000004-0000-0000-0000-000000000002">
<!-- Alice's original text -->
</div>
</blockquote>
</div>
</blockquote>
</div>
8.1.2. JSON-LD Part
[
{
"@context": [
"https://schema.org/",
{
"dateSent": "https://sml.draft.iana.org/dateSent",
"DateTime": "https://sml.draft.iana.org/DateTime",
"iso8601Extended": "https://sml.draft.iana.org/iso8601Extended"
}
],
"@type": "EmailMessage",
Tao, et al. Expires 7 January 2027 [Page 9]
Internet-Draft Structured Quoted Content July 2026
"@id": "mid:msg-ex1-001@example.com",
"sender": {
"@type": "Person",
"@id": "mailto:alice@example.com",
"name": "Alice Chen",
"email": "alice@example.com"
},
"toRecipient": [{
"@type": "Person",
"@id": "mailto:bob@example.com",
"name": "Bob Kumar",
"email": "bob@example.com"
}],
"about": {
"@type": "Thing",
"@id": "mid:msg-ex1-001@example.com/subject",
"name": "Lorem ipsum"
},
"dateSent": {
"@type": "DateTime",
"@id": "mid:msg-ex1-001@example.com/dateSent",
"iso8601Extended": "2025-09-15T09:47:00-07:00"
}
},
{
"@context": [
"https://schema.org/",
{
"dateSent": "https://sml.draft.iana.org/dateSent",
"DateTime": "https://sml.draft.iana.org/DateTime",
"iso8601Extended": "https://sml.draft.iana.org/iso8601Extended"
}
],
"@type": "EmailMessage",
"@id": "mid:msg-ex1-002@example.com",
"sender": {
"@type": "Person",
"@id": "mailto:bob@example.com",
"name": "Bob Kumar",
"email": "bob@example.com"
},
"toRecipient": [{
"@type": "Person",
"@id": "mailto:alice@example.com",
"name": "Alice Chen",
"email": "alice@example.com"
}],
"ccRecipient": [{
Tao, et al. Expires 7 January 2027 [Page 10]
Internet-Draft Structured Quoted Content July 2026
"@type": "Person",
"@id": "mailto:carol@example.com",
"name": "Carol White",
"email": "carol@example.com"
}],
"about": {
"@type": "Thing",
"@id": "mid:msg-ex1-002@example.com/subject",
"name": "Re: Lorem ipsum"
},
"dateSent": {
"@type": "DateTime",
"@id": "mid:msg-ex1-002@example.com/dateSent",
"iso8601Extended": "2025-09-15T14:23:00-07:00"
}
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedContent",
"@id": "quoted-content:A1000001-0000-0000-0000-000000000001",
"message": "mid:msg-ex1-002@example.com",
"preamble": "forward-preamble:A1000006-0000-0000-0000-000000000001",
"headerBlock": "quoted-header-block:A1000002-0000-0000-0000-000000000001",
"content": [
"text-content:A1000004-0000-0000-0000-000000000001",
"quoted-content:A1000001-0000-0000-0000-000000000002"
]
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedContent",
"@id": "quoted-content:A1000001-0000-0000-0000-000000000002",
"message": "mid:msg-ex1-001@example.com",
"attribution": "quote-attribution:A1000005-0000-0000-0000-000000000001",
"content": "text-content:A1000004-0000-0000-0000-000000000002"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeaderBlock",
"@id": "quoted-header-block:A1000002-0000-0000-0000-000000000001",
"header": [
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:A1000003-0000-0000-0000-000000000001",
"label": "From:",
"value": "mailto:bob@example.com"
},
Tao, et al. Expires 7 January 2027 [Page 11]
Internet-Draft Structured Quoted Content July 2026
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:A1000003-0000-0000-0000-000000000002",
"label": "Date:",
"value": "mid:msg-ex1-002@example.com/dateSent"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:A1000003-0000-0000-0000-000000000003",
"label": "Subject:",
"value": "mid:msg-ex1-002@example.com/subject"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:A1000003-0000-0000-0000-000000000004",
"label": "To:",
"value": "mailto:alice@example.com"
}
]
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuoteAttribution",
"@id": "quote-attribution:A1000005-0000-0000-0000-000000000001",
"date": "mid:msg-ex1-001@example.com/dateSent",
"from": "mailto:alice@example.com"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "TextContent",
"@id": "text-content:A1000004-0000-0000-0000-000000000001"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "TextContent",
"@id": "text-content:A1000004-0000-0000-0000-000000000002"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "ForwardPreamble",
"@id": "forward-preamble:A1000006-0000-0000-0000-000000000001"
}
]
Tao, et al. Expires 7 January 2027 [Page 12]
Internet-Draft Structured Quoted Content July 2026
8.2. Example 2: Reply with Inline Comment
Carol emails Dave and Eve. Dave replies, quoting Carol's message.
Eve replies, inserting an inline comment between Carol's message
text.
Eve's message has the following structure:
Eve's first comment
└── Dave's text (Eve's quote of Dave)
└── First portion of Carol's text (Dave's nested quote of Carol)
Eve's inline comment
└───└── Carol's remaining text (continuation of Carol's message)
8.2.1. HTML Part
Tao, et al. Expires 7 January 2027 [Page 13]
Internet-Draft Structured Quoted Content July 2026
<!-- Eve's first comment -->
<div data-source-id="cid:sml-ex2@example.com"
data-id="quoted-content:B2000001-0000-0000-0000-000000000001">
<div data-source-id="cid:sml-ex2@example.com"
data-id="quote-attribution:B2000005-0000-0000-0000-000000000001">
On Mon, Oct 6, 2025 at 2:15 PM, Dave Nguyen
<dave@example.com> wrote:
</div>
<blockquote>
<div data-source-id="cid:sml-ex2@example.com"
data-id="text-content:B2000004-0000-0000-0000-000000000001">
<!-- Dave's response text -->
</div>
<div data-source-id="cid:sml-ex2@example.com"
data-id="quoted-content:B2000001-0000-0000-0000-000000000003">
<hr>
<div data-source-id="cid:sml-ex2@example.com"
data-id="quoted-header-block:B2000002-0000-0000-0000-000000000001">
<b>From:</b> Carol Davies <carol@example.com><br>
<b>Sent:</b> Monday, October 6, 2025 9:00 AM<br>
<b>To:</b> Dave Nguyen <dave@example.com>; Eve Larsson <eve@example.com><br>
<b>Subject:</b> Lorem ipsum<br>
</div>
<div data-source-id="cid:sml-ex2@example.com"
data-id="text-content:B2000004-0000-0000-0000-000000000003">
<!-- First portion of Carol's text -->
</div>
</div>
</blockquote>
</div>
<!-- Eve's inline comment -->
<div data-source-id="cid:sml-ex2@example.com"
data-id="quoted-content:B2000001-0000-0000-0000-000000000002">
<blockquote>
<div data-source-id="cid:sml-ex2@example.com"
data-id="text-content:B2000004-0000-0000-0000-000000000002">
<!-- Carol's remaining text -->
</div>
</blockquote>
</div>
8.2.2. JSON-LD Part
Tao, et al. Expires 7 January 2027 [Page 14]
Internet-Draft Structured Quoted Content July 2026
[
{
"@context": [
"https://schema.org/",
{
"dateSent": "https://sml.draft.iana.org/dateSent",
"DateTime": "https://sml.draft.iana.org/DateTime",
"iso8601Extended": "https://sml.draft.iana.org/iso8601Extended"
}
],
"@type": "EmailMessage",
"@id": "mid:msg-ex2-001@example.com",
"sender": {
"@type": "Person",
"@id": "mailto:carol@example.com",
"name": "Carol Davies",
"email": "carol@example.com"
},
"toRecipient": [
{
"@type": "Person",
"@id": "mailto:dave@example.com",
"name": "Dave Nguyen",
"email": "dave@example.com"
},
{
"@type": "Person",
"@id": "mailto:eve@example.com",
"name": "Eve Larsson",
"email": "eve@example.com"
}
],
"about": {
"@type": "Thing",
"@id": "mid:msg-ex2-001@example.com/subject",
"name": "Lorem ipsum"
},
"dateSent": {
"@type": "DateTime",
"@id": "mid:msg-ex2-001@example.com/dateSent",
"iso8601Extended": "2025-10-06T09:00:00-07:00"
}
},
{
"@context": [
"https://schema.org/",
{
"dateSent": "https://sml.draft.iana.org/dateSent",
Tao, et al. Expires 7 January 2027 [Page 15]
Internet-Draft Structured Quoted Content July 2026
"DateTime": "https://sml.draft.iana.org/DateTime",
"iso8601Extended": "https://sml.draft.iana.org/iso8601Extended"
}
],
"@type": "EmailMessage",
"@id": "mid:msg-ex2-002@example.com",
"sender": {
"@type": "Person",
"@id": "mailto:dave@example.com",
"name": "Dave Nguyen",
"email": "dave@example.com"
},
"toRecipient": [
{
"@type": "Person",
"@id": "mailto:carol@example.com",
"name": "Carol Davies",
"email": "carol@example.com"
},
{
"@type": "Person",
"@id": "mailto:eve@example.com",
"name": "Eve Larsson",
"email": "eve@example.com"
}
],
"about": {
"@type": "Thing",
"@id": "mid:msg-ex2-002@example.com/subject",
"name": "Re: Lorem ipsum"
},
"dateSent": {
"@type": "DateTime",
"@id": "mid:msg-ex2-002@example.com/dateSent",
"iso8601Extended": "2025-10-06T14:15:00-07:00"
}
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedContent",
"@id": "quoted-content:B2000001-0000-0000-0000-000000000001",
"message": "mid:msg-ex2-002@example.com",
"attribution": "quote-attribution:B2000005-0000-0000-0000-000000000001",
"content": [
"text-content:B2000004-0000-0000-0000-000000000001",
"quoted-content:B2000001-0000-0000-0000-000000000003"
]
},
Tao, et al. Expires 7 January 2027 [Page 16]
Internet-Draft Structured Quoted Content July 2026
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedContent",
"@id": "quoted-content:B2000001-0000-0000-0000-000000000002",
"message": "mid:msg-ex2-001@example.com",
"content": "text-content:B2000004-0000-0000-0000-000000000002"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedContent",
"@id": "quoted-content:B2000001-0000-0000-0000-000000000003",
"message": "mid:msg-ex2-001@example.com",
"headerBlock": "quoted-header-block:B2000002-0000-0000-0000-000000000001",
"content": "text-content:B2000004-0000-0000-0000-000000000003"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuoteAttribution",
"@id": "quote-attribution:B2000005-0000-0000-0000-000000000001",
"date": "mid:msg-ex2-002@example.com/dateSent",
"from": "mailto:dave@example.com"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeaderBlock",
"@id": "quoted-header-block:B2000002-0000-0000-0000-000000000001",
"header": [
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:B2000003-0000-0000-0000-000000000001",
"label": "From:",
"value": "mailto:carol@example.com"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:B2000003-0000-0000-0000-000000000002",
"label": "Sent:",
"value": "mid:msg-ex2-001@example.com/dateSent"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:B2000003-0000-0000-0000-000000000003",
"label": "To:",
"value": ["mailto:dave@example.com", "mailto:eve@example.com"]
},
Tao, et al. Expires 7 January 2027 [Page 17]
Internet-Draft Structured Quoted Content July 2026
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:B2000003-0000-0000-0000-000000000004",
"label": "Subject:",
"value": "mid:msg-ex2-001@example.com/subject"
}
]
},
{
"@context": "https://sml.draft.iana.org",
"@type": "TextContent",
"@id": "text-content:B2000004-0000-0000-0000-000000000001"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "TextContent",
"@id": "text-content:B2000004-0000-0000-0000-000000000002"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "TextContent",
"@id": "text-content:B2000004-0000-0000-0000-000000000003"
}
]
8.3. Example 3: Quote Chain including Non-Adopter
Frank emails Grace, Heidi, and Ivan. Grace replies to Frank; Grace's
MUA does not support Structured Quoted Content. Heidi replies to
Grace. Ivan replies to Heidi.
Ivan's message has the following structure:
Ivan's text
└── Heidi's text (Ivan's quote of Heidi)
└── Grace's text (Heidi's nested quote of Grace, including Grace's unstructured quote of Frank)
8.3.1. HTML Part
Tao, et al. Expires 7 January 2027 [Page 18]
Internet-Draft Structured Quoted Content July 2026
<!-- Ivan's text -->
<div data-source-id="cid:sml-ex3@example.com"
data-id="quoted-content:C3000001-0000-0000-0000-000000000001">
<div data-source-id="cid:sml-ex3@example.com"
data-id="quote-attribution:C3000005-0000-0000-0000-000000000001">
On Tue, Oct 7, 2025 at 11:30 AM, Heidi Müller
<heidi@example.com> wrote:
</div>
<blockquote>
<div data-source-id="cid:sml-ex3@example.com"
data-id="text-content:C3000004-0000-0000-0000-000000000001">
<!-- Heidi's text -->
</div>
<div data-source-id="cid:sml-ex3@example.com"
data-id="quoted-content:C3000001-0000-0000-0000-000000000002">
<div data-source-id="cid:sml-ex3@example.com"
data-id="quoted-header-block:C3000002-0000-0000-0000-000000000001">
<span data-source-id="cid:sml-ex3@example.com"
data-id="quoted-header:C3000003-0000-0000-0000-000000000001">
<b>From:</b> Grace Kim <grace@example.com>
</span>
<span data-source-id="cid:sml-ex3@example.com"
data-id="quoted-header:C3000003-0000-0000-0000-000000000002">
<b>Sent:</b> Tuesday, October 7, 2025 10:15
</span>
<span data-source-id="cid:sml-ex3@example.com"
data-id="quoted-header:C3000003-0000-0000-0000-000000000003">
<b>To:</b> Frank Osei <frank@example.com>; Heidi Müller <heidi@example.com>; Ivan Santos <ivan@example.com>
</span>
<span data-source-id="cid:sml-ex3@example.com"
data-id="quoted-header:C3000003-0000-0000-0000-000000000004">
<b>Subject:</b> Re: Lorem ipsum
</span>
</div>
<div data-source-id="cid:sml-ex3@example.com"
data-id="text-content:C3000004-0000-0000-0000-000000000002">
<!-- Grace's text, including unstructured quote of Frank -->
</div>
</div>
</blockquote>
</div>
8.3.2. JSON-LD Part
Tao, et al. Expires 7 January 2027 [Page 19]
Internet-Draft Structured Quoted Content July 2026
[
{
"@context": [
"https://schema.org/",
{
"dateSent": "https://sml.draft.iana.org/dateSent",
"DateTime": "https://sml.draft.iana.org/DateTime",
"iso8601Extended": "https://sml.draft.iana.org/iso8601Extended"
}
],
"@type": "EmailMessage",
"@id": "mid:msg-ex3-001@example.com",
"sender": {
"@type": "Person",
"@id": "mailto:grace@example.com",
"name": "Grace Kim",
"email": "grace@example.com"
},
"toRecipient": [{
"@type": "Person",
"@id": "mailto:heidi@example.com",
"name": "Heidi Müller",
"email": "heidi@example.com"
}],
"about": {
"@type": "Thing",
"@id": "mid:msg-ex3-001@example.com/subject",
"name": "Re: Lorem ipsum"
},
"dateSent": {
"@type": "DateTime",
"@id": "mid:msg-ex3-001@example.com/dateSent",
"iso8601Extended": "2025-10-07T10:15:00-07:00"
}
},
{
"@context": [
"https://schema.org/",
{
"dateSent": "https://sml.draft.iana.org/dateSent",
"DateTime": "https://sml.draft.iana.org/DateTime",
"iso8601Extended": "https://sml.draft.iana.org/iso8601Extended"
}
],
"@type": "EmailMessage",
"@id": "mid:msg-ex3-002@example.com",
"sender": {
"@type": "Person",
Tao, et al. Expires 7 January 2027 [Page 20]
Internet-Draft Structured Quoted Content July 2026
"@id": "mailto:heidi@example.com",
"name": "Heidi Müller",
"email": "heidi@example.com"
},
"toRecipient": [{
"@type": "Person",
"@id": "mailto:ivan@example.com",
"name": "Ivan Santos",
"email": "ivan@example.com"
}],
"about": {
"@type": "Thing",
"@id": "mid:msg-ex3-002@example.com/subject",
"name": "Re: Lorem ipsum"
},
"dateSent": {
"@type": "DateTime",
"@id": "mid:msg-ex3-002@example.com/dateSent",
"iso8601Extended": "2025-10-07T11:30:00-07:00"
}
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedContent",
"@id": "quoted-content:C3000001-0000-0000-0000-000000000001",
"message": "mid:msg-ex3-002@example.com",
"attribution": "quote-attribution:C3000005-0000-0000-0000-000000000001",
"content": [
"text-content:C3000004-0000-0000-0000-000000000001",
"quoted-content:C3000001-0000-0000-0000-000000000002"
]
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedContent",
"@id": "quoted-content:C3000001-0000-0000-0000-000000000002",
"message": "mid:msg-ex3-001@example.com",
"headerBlock": "quoted-header-block:C3000002-0000-0000-0000-000000000001",
"content": "text-content:C3000004-0000-0000-0000-000000000002"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuoteAttribution",
"@id": "quote-attribution:C3000005-0000-0000-0000-000000000001",
"date": "mid:msg-ex3-002@example.com/dateSent",
"from": "mailto:heidi@example.com"
},
{
Tao, et al. Expires 7 January 2027 [Page 21]
Internet-Draft Structured Quoted Content July 2026
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeaderBlock",
"@id": "quoted-header-block:C3000002-0000-0000-0000-000000000001",
"header": [
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:C3000003-0000-0000-0000-000000000001",
"label": "From:",
"value": "mailto:grace@example.com"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:C3000003-0000-0000-0000-000000000002",
"label": "Sent:",
"value": "mid:msg-ex3-001@example.com/dateSent"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:C3000003-0000-0000-0000-000000000003",
"label": "To:",
"value": ["mailto:frank@example.com", "mailto:heidi@example.com", "mailto:ivan@example.com"]
},
{
"@context": "https://sml.draft.iana.org",
"@type": "QuotedHeader",
"@id": "quoted-header:C3000003-0000-0000-0000-000000000004",
"label": "Subject:",
"value": "mid:msg-ex3-001@example.com/subject"
}
]
},
{
"@context": "https://sml.draft.iana.org",
"@type": "TextContent",
"@id": "text-content:C3000004-0000-0000-0000-000000000001"
},
{
"@context": "https://sml.draft.iana.org",
"@type": "TextContent",
"@id": "text-content:C3000004-0000-0000-0000-000000000002"
}
]
Tao, et al. Expires 7 January 2027 [Page 22]
Internet-Draft Structured Quoted Content July 2026
9. Security Considerations
TODO Security
10. IANA Considerations
This document has no IANA actions.
11. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.
Acknowledgments
TODO acknowledge.
Authors' Addresses
Phillip Tao
Apple Inc.
Email: ptao@apple.com
Arnt Gulbrandsen
ICANN
Email: arnt@gulbrandsen.priv.no
Ben Bucksch
Beonex
Email: ben.bucksch@beonex.com
Tao, et al. Expires 7 January 2027 [Page 23]