Internet-Draft Structured Quoted Content November 2026
Tao, et al. Expires 5 May 2027 [Page]
Workgroup:
Structured Email
Internet-Draft:
draft-ietf-sml-structured-quoted-content-01
Published:
Intended Status:
Standards Track
Expires:
Authors:
P. Tao
Apple Inc.
A. Gulbrandsen
ICANN
B. Bucksch
Beonex

Structured Quoted Content

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.

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 5 May 2027.

▲

Table of Contents

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:

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.

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

An MUA that supports Structured Quoted Content composes the HTML part of a reply or forward as usual, in its own quoting style. It then:

The figure below shows this for a quote introduced by an attribution line.

HTML part                              JSON-LD part
---------                              ------------
<div data-id="quoted-content:1"> ..... QuotedContent
                                         message --> EmailMessage
  <div data-id="quote-attribution:2">  QuoteAttribution
    On Sep 15, Alice Chen wrote:         from --> sender
  </div>                                 date --> dateSent
  <blockquote>
    <div data-id="text-content:3"> ... TextContent
      (Alice's text)
    </div>
  </blockquote>
</div>
Figure 1: An attribution-style quote and its structured data (identifiers shortened)

A receiving MUA that supports Structured Quoted Content can therefore find each part of the quoted content in the HTML part, know what it is and which message it comes from, and render it differently (Section 7). A receiving MUA that does not support it renders the HTML part as usual.

4. Structured Email Format

4.1. Structured Data Type

All quoted content will be transmitted as "Partial representation" as defined in Section 4.3.2 of [I-D.ietf-sml-structured-email].

4.2. Vocabularies

Structured Quoted Content uses the Schema.org vocabulary [SchemaOrg], as well as a custom vocabulary to be defined at INSERT LINK.

5. JSON-LD Objects

The structured data is an array containing two kinds of objects:

Where this document says a property references an object, its value is that object's @id, or an array of them.

The relationships between the object types are:

QuotedContent
+-- message -------> EmailMessage
+-- preamble ------> ForwardPreamble
+-- headerBlock ---> QuotedHeaderBlock
|                    +-- header: QuotedHeader objects
|                        +-- value --> a property of the
|                                      EmailMessage
+-- attribution ---> QuoteAttribution
|                    +-- date --> dateSent
|                    +-- from --> sender
+-- content -------> TextContent and nested QuotedContent

A QuotedHeaderBlock and a QuoteAttribution are alternative ways of introducing a quoted message, so a QuotedContent has at most one of them (Section 5.3).

5.1. Common Properties

Every object has @context, @type, and @id. Each object type defines its own @id format. EmailMessage defines its own @context (Section 5.2); for all other object types, @context is "https://sml.draft.iana.org".

Unless stated otherwise, a receiving MUA MUST ignore properties it does not recognize, and MUST process the rest of the object as if they were absent.

5.2. EmailMessage

An EmailMessage object describes one message that appears in the quoted content. It holds the header field values [RFC5322] that MUAs typically show for a quoted message, such as its sender, recipients, subject, and date.

The structured data contains one EmailMessage object for each distinct message in the quoted content, at any level of nesting. A sending MUA SHOULD NOT include EmailMessage objects that no QuotedContent object references. When the sending MUA splits one quoted message into several blocks, for example to insert inline comments, each block has its own QuotedContent object, and they all reference the same EmailMessage.

EmailMessage uses the Schema.org [SchemaOrg] EmailMessage type, with terms from the sml.draft.iana.org vocabulary for dates. Its @context MUST be the following:

"@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"
  }
]

Unlike Schema.org's dateSent, these dates are nodes with their own @id, so that QuotedHeader and QuoteAttribution objects can reference them.

Its @id is a mid: URL [RFC2392]: "mid:" followed by the value of the message's Message-ID header field, without the enclosing angle brackets and percent-encoded as [RFC2392] requires. For example, a message with Message-ID: <msg-ex1-001@example.com> has the @id "mid:msg-ex1-001@example.com". Characters such as #, /, and % are allowed in a Message-ID but have special meaning in the URL, so they have to be encoded: Message-ID: <a#b/c@example.com> gives "mid:a%23b%2Fc@example.com".

5.2.1. Value Types

The EmailMessage properties in Section 5.2.2 use the following value types. Each property defines the @id format of its values.

5.2.1.1. DateTime

A DateTime is a DateTime object from the sml.draft.iana.org vocabulary, representing a date and time. It has this property:

iso8601Extended

REQUIRED. The date and time in ISO 8601 extended format, with a UTC offset, using the date-time syntax of Section 5.6 of [RFC3339], for example "2025-09-15T09:47:00-07:00".

5.2.1.2. Person

A Person is a Person object from the Schema.org vocabulary [SchemaOrg], representing one mailbox. It has these properties:

email

REQUIRED. The mailbox's address, for example "alice@example.com".

name

OPTIONAL. The mailbox's display name with any encoded-words [RFC2047] decoded, if the header field includes one.

5.2.1.3. Thing

A Thing is a Thing object from the Schema.org vocabulary. It has this property:

name

REQUIRED. The text that the Thing represents, as defined by the property that uses it.

5.2.2. Properties

The following table lists the properties of an EmailMessage, with the requirement level and value type of each. Each property is defined after the table.

Table 1: EmailMessage properties
Property Requirement Value
dateSent REQUIRED DateTime (Section 5.2.1.1)
sender REQUIRED Person (Section 5.2.1.2)
toRecipient RECOMMENDED Person, or array of Person (Section 5.2.1.2)
ccRecipient RECOMMENDED Person, or array of Person (Section 5.2.1.2)
about RECOMMENDED Thing (Section 5.2.1.3)
bccRecipient MUST NOT appear  

The RECOMMENDED properties apply only when the message has the corresponding header field (To, Cc, or Subject).

In addition, an EmailMessage MUST include every property that a QuotedHeader or QuoteAttribution object references. For example, if a header block shows a "Cc:" line, the EmailMessage for that message includes ccRecipient.

The properties are defined as follows:

dateSent

The message's Date header field, as a DateTime. Its @id is the message's @id followed by "#dateSent", for example "mid:msg-ex1-001@example.com#dateSent". The UTC offset in its iso8601Extended SHOULD be the one in the Date header field.

sender

The author of the message, from its From header field (not its Sender header field), as a Person. Its @id is a mailto: URI [RFC6068]: "mailto:" followed by the mailbox's address, for example "mailto:alice@example.com". The address in the @id, with any percent-encoding decoded, MUST be the same as the Person's email.

toRecipient

The recipients in the message's To header field, as a Person or an array of Person, in the order they appear in the header field. Each Person is as described for sender.

ccRecipient

The recipients in the message's Cc header field, as a Person or an array of Person, in the order they appear in the header field. Each Person is as described for sender.

about

The message's Subject header field, as a Thing. Its @id is the message's @id followed by "#subject", for example "mid:msg-ex1-001@example.com#subject". Its name is the subject text with any encoded-words [RFC2047] decoded.

The same mailbox often appears more than once in the structured data, for example as the sender of one message and a recipient of another. A sending MUA SHOULD include the full Person object only once, and use a node reference [JSON-LD] containing only its @id, for example {"@id": "mailto:alice@example.com"}, for the other occurrences.

The bccRecipient property is defined by Schema.org for EmailMessage, but MUST NOT be included. Bcc recipients are hidden from the message's other recipients by design, and including them would disclose them to everyone who receives the new message.

5.2.3. Other Properties

A sending MUA MAY include other properties that Schema.org defines for EmailMessage, other than bccRecipient. This document does not define any behavior for such properties, and a receiving MUA MAY ignore them.

When a receiving MUA ignores a property, it MUST process the rest of the object as if that property were absent. The presence of such a property does not make the object or the structured data invalid.

5.3. QuotedContent

A QuotedContent object represents one block of quoted content: a contiguous part of a quoted message, as it appears in the HTML part. It links the block to the message it was quoted from, to any preamble, header block, or attribution line that the sending MUA placed above it, and to the content of the block itself.

QuotedContent objects nest. When a quoted message itself contains quoted content, the inner block is a separate QuotedContent object, listed in the content of the outer one. When the sending MUA splits a quoted message into several blocks, for example to insert inline comments between them, each block is a separate QuotedContent object that references the same EmailMessage. Typically only the first of these blocks has an attribution line or header block.

A sending MUA introduces a quoted message either with a header block or with an attribution line, depending on its quoting style. A QuotedContent object therefore has at most one of headerBlock and attribution, never both. It has neither when the block has no introduction, for example when it continues a message after an inline comment.

Its @type is "QuotedContent", and its @id is "quoted-content:" followed by a UUID [RFC9562]. It has the following properties:

message

REQUIRED. References the EmailMessage that this block is quoted from.

preamble

OPTIONAL. References the ForwardPreamble shown above the block. Present only when the block is a forwarded message and the sending MUA shows a preamble.

headerBlock

OPTIONAL. References the QuotedHeaderBlock shown above the block. MUST NOT be present if attribution is present.

attribution

OPTIONAL. References the QuoteAttribution shown above the block. MUST NOT be present if headerBlock is present.

content

REQUIRED. A JSON-LD list ({"@list": [...]}) [JSON-LD] of references to the TextContent and nested QuotedContent objects that make up the block, in the order they appear in the HTML part.

5.4. QuotedHeaderBlock

A QuotedHeaderBlock object represents the lines of header fields (such as "From:", "Date:", and "Subject:") that some MUAs show above a quoted or forwarded message.

Its @type is "QuotedHeaderBlock", and its @id is "quoted-header-block:" followed by a UUID. It has the following property:

header

REQUIRED. A JSON-LD list ({"@list": [...]}) of one or more QuotedHeader objects, one for each line of the block, in the order they are displayed. A QuotedHeaderBlock with no QuotedHeader objects is not allowed.

5.5. QuotedHeader

A QuotedHeader object represents one line of a header block. It identifies the EmailMessage property whose value the line shows.

QuotedHeader objects appear only in the header list of a QuotedHeaderBlock; they are never top-level objects in the structured data, and no other JSON-LD object refers to them.

A QuotedHeader's property and value refer to the EmailMessage referenced by the QuotedContent that the header block belongs to.

Its @type is "QuotedHeader", and its @id is "quoted-header:" followed by a UUID. It has the following properties:

property

REQUIRED. References the EmailMessage property that the line shows, by that property's IRI: https://schema.org/sender, https://schema.org/toRecipient, https://schema.org/ccRecipient, https://schema.org/about, or https://sml.draft.iana.org/dateSent. For example, a "From:" line has {"@id": "https://schema.org/sender"}.

value

REQUIRED. References the value that the line shows: the Person objects of sender, toRecipient, or ccRecipient, the subject object of about, or the DateTime of dateSent. When a line shows several recipients, this is an array.

5.6. QuoteAttribution

A QuoteAttribution object represents the attribution line that some MUAs place above quoted text, for example "On Sep 15, 2025, at 9:47 AM, Alice Chen <alice@example.com> wrote:". Its properties reference the date and sender that the line shows.

Its @type is "QuoteAttribution", and its @id is "quote-attribution:" followed by a UUID. It has the following properties:

date

OPTIONAL. References the DateTime of the dateSent property shown in the line. Absent when the line shows no date, as in "Alice Chen wrote:".

from

REQUIRED. References the Person of the sender property shown in the line.

5.7. TextContent

A TextContent object represents a section of a quoted message's body [RFC5322], not including any content that the message itself quotes.

Its @type is "TextContent", and its @id is "text-content:" followed by a UUID. It has no properties other than the common ones.

5.8. ForwardPreamble

A ForwardPreamble object marks the line that some MUAs place at the start of a forwarded message, such as "---------- Forwarded message ---------" or "Begin forwarded message:".

Its @type is "ForwardPreamble", and its @id is "forward-preamble:" followed by a UUID. It has no properties other than the common ones.

6. HTML Format

Each QuotedContent, QuotedHeaderBlock, QuotedHeader, QuoteAttribution, TextContent, and ForwardPreamble object MUST correspond to exactly one element in the HTML part, typically a div or span. The element has the following attributes:

data-id

REQUIRED. The @id of the object, as defined in Section 4.4.2 of [I-D.ietf-sml-structured-email].

data-source-hint

OPTIONAL. A hint for where to find the object: a cid: URI [RFC2392] referencing the MIME part that contains the structured data. The object is identified by its data-id; this attribute only suggests where to look for it.

An object's element MUST be inside the element of the object that refers to it. The elements of a QuotedContent's preamble, header block, attribution line, and content are inside the QuotedContent's element, and the element of each QuotedHeader is inside the element of its QuotedHeaderBlock.

EmailMessage objects describe messages rather than parts of the HTML part, and have no element.

7. MUA Guidance

Structured Quoted Content identifies the parts of the quoted content in the HTML part, and the messages they were quoted from. A receiving MUA can use it to change or replace how the quoted content is rendered, in any number of ways. For example, it can:

A receiving MUA can use as much or as little of the structure as it needs. At one end, it can work on a single kind of object and leave the rest of the HTML part as the sending MUA wrote it, for example translating the labels of quoted header lines while ignoring the rest of the quoted structure. At the other end, it can replace the HTML of an entire top-level QuotedContent block with HTML it generates itself from the structured data. It can also do anything in between.

The text of the quoted messages is not in the structured data; it is only in the HTML part, in the elements of the TextContent objects. A receiving MUA that generates its own HTML for a block therefore still uses the HTML of those elements for the quoted text.

8. Backwards Compatibility

Not every MUA in a reply chain will support Structured Quoted Content. This creates two situations:

  1. An MUA that supports Structured Quoted Content quotes a message that has none.

  2. An MUA that does not support Structured Quoted Content quotes a message that has it.

8.1. Quoting a Message Without Structured Quoted Content

An MUA that quotes a message without Structured Quoted Content SHOULD NOT try to reconstruct that message's quote structure, for example by parsing its HTML. Instead, it treats the quoted message as containing no quoted content: the message's body, including anything that it quotes in turn, is TextContent, with no nested QuotedContent. Section 9.3 shows this.

8.2. Quoting a Message With Structured Quoted Content, Without Support

An MUA that does not support Structured Quoted Content is not bound by this document. When it quotes a message that has Structured Quoted Content, it can break it, for example by:

  • editing the HTML, so that its elements no longer match the objects in the structured data;

  • removing or changing the application/ld+json part, or keeping it only as an attachment, as some MUAs do with a quoted or forwarded message's attachments; or

  • changing the MIME structure, so that the message is no longer a partial representation.

The resulting message has no usable Structured Quoted Content, even if its HTML still contains data-id attributes copied from the message it quoted.

8.3. Effect on Later Messages

As a result, the structured data in a message describes only the most recent part of the reply chain: the messages back to the first one sent by an MUA without Structured Quoted Content support. Older messages are part of that message's TextContent, as ordinary HTML.

When rendering a message, a receiving MUA SHOULD use only the structured data in that message's own application/ld+json part: the one in the same multipart/related entity as the HTML part it describes (Section 4.3.2 of [I-D.ietf-sml-structured-email]). An application/ld+json part elsewhere in the message, such as one attached from a quoted message, is not that message's structured data. A receiving MUA SHOULD ignore any data-id attribute that does not match an object in that part, and render that HTML as ordinary content.

9. 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-hint attributes in the HTML part, and HTML elements use data-id to identify their corresponding JSON-LD object.

Each Person is included in full once, at its first occurrence, and referenced by its @id elsewhere (Section 5.2.2).

All examples use the following MIME structure, with a unique Content-Id per message:

multipart/alternative
+-- text/plain
+-- multipart/related; type="text/html"
    +-- text/html
    +-- application/ld+json
           Content-Id: <sml-example@example.com>

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

9.1.1. HTML Part

=============== NOTE: '\' line wrapping per RFC 8792 ================

<!-- Carol's note -->
<div data-source-hint="cid:sml-ex1@example.com"
     data-id="quoted-content:A1000001-0000-0000-0000-000000000001">
  <div data-source-hint="cid:sml-ex1@example.com"
       data-id="forward-preamble:A1000006-0000-0000-0000-\
                                                       000000000001">
    ---------- Forwarded message ---------
  </div>
  <div data-source-hint="cid:sml-ex1@example.com"
       data-id="quoted-header-block:A1000002-0000-0000-0000-\
                                                       000000000001">
    <span data-source-hint="cid:sml-ex1@example.com"
          data-id="quoted-header:A1000003-0000-0000-0000-\
                                                       000000000001">
      <b>From:</b> Bob Kumar &lt;bob@example.com&gt;
    </span><br>
    <span data-source-hint="cid:sml-ex1@example.com"
          data-id="quoted-header:A1000003-0000-0000-0000-\
                                                       000000000002">
      <b>Date:</b> Mon, Sep 15, 2025 at 2:23 PM
    </span><br>
    <span data-source-hint="cid:sml-ex1@example.com"
          data-id="quoted-header:A1000003-0000-0000-0000-\
                                                       000000000003">
      <b>Subject:</b> Re: Lorem ipsum
    </span><br>
    <span data-source-hint="cid:sml-ex1@example.com"
          data-id="quoted-header:A1000003-0000-0000-0000-\
                                                       000000000004">
      <b>To:</b> Alice Chen &lt;alice@example.com&gt;
    </span>
  </div>
  <blockquote>
    <div data-source-hint="cid:sml-ex1@example.com"
         data-id="text-content:A1000004-0000-0000-0000-000000000001">
      <!-- Bob's reply text -->
    </div>
    <div data-source-hint="cid:sml-ex1@example.com"
         data-id="quoted-content:A1000001-0000-0000-0000-\
                                                       000000000002">
      <blockquote type="cite">
        <div data-source-hint="cid:sml-ex1@example.com"
             data-id="quote-attribution:A1000005-0000-0000-0000-\
                                                       000000000001">
          On Sep 15, 2025, at 9:47 AM, Alice Chen
          &lt;alice@example.com&gt; wrote:
        </div>
        <div data-source-hint="cid:sml-ex1@example.com"
             data-id="text-content:A1000004-0000-0000-0000-\
                                                       000000000002">
          <!-- Alice's original text -->
        </div>
      </blockquote>
    </div>
  </blockquote>
</div>

9.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",
    "@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": {
      "@id": "mailto:bob@example.com"
    },
    "toRecipient": [{
      "@id": "mailto:alice@example.com"
    }],
    "ccRecipient": [{
      "@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": {"@id": "mid:msg-ex1-002@example.com"},
    "preamble": {
      "@id": "forward-preamble:A1000006-0000-0000-0000-000000000001"
    },
    "headerBlock": {
      "@id":
        "quoted-header-block:A1000002-0000-0000-0000-000000000001"
    },
    "content": {"@list": [
      {"@id": "text-content:A1000004-0000-0000-0000-000000000001"},
      {"@id": "quoted-content:A1000001-0000-0000-0000-000000000002"}
    ]}
  },
  {
    "@context": "https://sml.draft.iana.org",
    "@type": "QuotedContent",
    "@id": "quoted-content:A1000001-0000-0000-0000-000000000002",
    "message": {"@id": "mid:msg-ex1-001@example.com"},
    "attribution": {
      "@id": "quote-attribution:A1000005-0000-0000-0000-000000000001"
    },
    "content": {"@list": [
      {"@id": "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": {"@list": [
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:A1000003-0000-0000-0000-000000000001",
        "property": {"@id": "https://schema.org/sender"},
        "value": {"@id": "mailto:bob@example.com"}
      },
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:A1000003-0000-0000-0000-000000000002",
        "property": {"@id": "https://sml.draft.iana.org/dateSent"},
        "value": {"@id": "mid:msg-ex1-002@example.com#dateSent"}
      },
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:A1000003-0000-0000-0000-000000000003",
        "property": {"@id": "https://schema.org/about"},
        "value": {"@id": "mid:msg-ex1-002@example.com#subject"}
      },
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:A1000003-0000-0000-0000-000000000004",
        "property": {"@id": "https://schema.org/toRecipient"},
        "value": {"@id": "mailto:alice@example.com"}
      }
    ]}
  },
  {
    "@context": "https://sml.draft.iana.org",
    "@type": "QuoteAttribution",
    "@id": "quote-attribution:A1000005-0000-0000-0000-000000000001",
    "date": {"@id": "mid:msg-ex1-001@example.com#dateSent"},
    "from": {"@id": "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"
  }
]

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

9.2.1. HTML Part

=============== NOTE: '\' line wrapping per RFC 8792 ================

<!-- Eve's first comment -->
<div data-source-hint="cid:sml-ex2@example.com"
     data-id="quoted-content:B2000001-0000-0000-0000-000000000001">
  <div data-source-hint="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
    &lt;dave@example.com&gt; wrote:
  </div>
  <blockquote>
    <div data-source-hint="cid:sml-ex2@example.com"
         data-id="text-content:B2000004-0000-0000-0000-000000000001">
      <!-- Dave's response text -->
    </div>
    <div data-source-hint="cid:sml-ex2@example.com"
         data-id="quoted-content:B2000001-0000-0000-0000-\
                                                       000000000003">
      <hr>
      <div data-source-hint="cid:sml-ex2@example.com"
           data-id="quoted-header-block:B2000002-0000-0000-0000-\
                                                       000000000001">
        <span data-source-hint="cid:sml-ex2@example.com"
              data-id="quoted-header:B2000003-0000-0000-0000-\
                                                       000000000001">
          <b>From:</b> Carol Davies &lt;carol@example.com&gt;
        </span><br>
        <span data-source-hint="cid:sml-ex2@example.com"
              data-id="quoted-header:B2000003-0000-0000-0000-\
                                                       000000000002">
          <b>Sent:</b> Monday, October 6, 2025 9:00 AM
        </span><br>
        <span data-source-hint="cid:sml-ex2@example.com"
              data-id="quoted-header:B2000003-0000-0000-0000-\
                                                       000000000003">
          <b>To:</b> Dave Nguyen &lt;dave@example.com&gt;;
          Eve Larsson &lt;eve@example.com&gt;
        </span><br>
        <span data-source-hint="cid:sml-ex2@example.com"
              data-id="quoted-header:B2000003-0000-0000-0000-\
                                                       000000000004">
          <b>Subject:</b> Lorem ipsum
        </span>
      </div>
      <div data-source-hint="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-hint="cid:sml-ex2@example.com"
     data-id="quoted-content:B2000001-0000-0000-0000-000000000002">
  <blockquote>
    <div data-source-hint="cid:sml-ex2@example.com"
         data-id="text-content:B2000004-0000-0000-0000-000000000002">
      <!-- Carol's remaining text -->
    </div>
  </blockquote>
</div>

9.2.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",
    "@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",
        "DateTime": "https://sml.draft.iana.org/DateTime",
        "iso8601Extended":
          "https://sml.draft.iana.org/iso8601Extended"
      }
    ],
    "@type": "EmailMessage",
    "@id": "mid:msg-ex2-002@example.com",
    "sender": {
      "@id": "mailto:dave@example.com"
    },
    "toRecipient": [
      {
        "@id": "mailto:carol@example.com"
      },
      {
        "@id": "mailto: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": {"@id": "mid:msg-ex2-002@example.com"},
    "attribution": {
      "@id": "quote-attribution:B2000005-0000-0000-0000-000000000001"
    },
    "content": {"@list": [
      {"@id": "text-content:B2000004-0000-0000-0000-000000000001"},
      {"@id": "quoted-content:B2000001-0000-0000-0000-000000000003"}
    ]}
  },
  {
    "@context": "https://sml.draft.iana.org",
    "@type": "QuotedContent",
    "@id": "quoted-content:B2000001-0000-0000-0000-000000000002",
    "message": {"@id": "mid:msg-ex2-001@example.com"},
    "content": {"@list": [
      {"@id": "text-content:B2000004-0000-0000-0000-000000000002"}
    ]}
  },
  {
    "@context": "https://sml.draft.iana.org",
    "@type": "QuotedContent",
    "@id": "quoted-content:B2000001-0000-0000-0000-000000000003",
    "message": {"@id": "mid:msg-ex2-001@example.com"},
    "headerBlock": {
      "@id":
        "quoted-header-block:B2000002-0000-0000-0000-000000000001"
    },
    "content": {"@list": [
      {"@id": "text-content:B2000004-0000-0000-0000-000000000003"}
    ]}
  },
  {
    "@context": "https://sml.draft.iana.org",
    "@type": "QuoteAttribution",
    "@id": "quote-attribution:B2000005-0000-0000-0000-000000000001",
    "date": {"@id": "mid:msg-ex2-002@example.com#dateSent"},
    "from": {"@id": "mailto:dave@example.com"}
  },
  {
    "@context": "https://sml.draft.iana.org",
    "@type": "QuotedHeaderBlock",
    "@id":
      "quoted-header-block:B2000002-0000-0000-0000-000000000001",
    "header": {"@list": [
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:B2000003-0000-0000-0000-000000000001",
        "property": {"@id": "https://schema.org/sender"},
        "value": {"@id": "mailto:carol@example.com"}
      },
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:B2000003-0000-0000-0000-000000000002",
        "property": {"@id": "https://sml.draft.iana.org/dateSent"},
        "value": {"@id": "mid:msg-ex2-001@example.com#dateSent"}
      },
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:B2000003-0000-0000-0000-000000000003",
        "property": {"@id": "https://schema.org/toRecipient"},
        "value": [
          {"@id": "mailto:dave@example.com"},
          {"@id": "mailto:eve@example.com"}
        ]
      },
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:B2000003-0000-0000-0000-000000000004",
        "property": {"@id": "https://schema.org/about"},
        "value": {"@id": "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"
  }
]

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

9.3.1. HTML Part

=============== NOTE: '\' line wrapping per RFC 8792 ================

<!-- Ivan's text -->
<div data-source-hint="cid:sml-ex3@example.com"
     data-id="quoted-content:C3000001-0000-0000-0000-000000000001">
  <div data-source-hint="cid:sml-ex3@example.com"
       data-id="quote-attribution:C3000005-0000-0000-0000-\
                                                       000000000001">
    On Tue, Oct 7, 2025 at 11:30 AM, Heidi Mueller
    &lt;heidi@example.com&gt; wrote:
  </div>
  <blockquote>
    <div data-source-hint="cid:sml-ex3@example.com"
         data-id="text-content:C3000004-0000-0000-0000-000000000001">
      <!-- Heidi's text -->
    </div>
    <div data-source-hint="cid:sml-ex3@example.com"
         data-id="quoted-content:C3000001-0000-0000-0000-\
                                                       000000000002">
      <div data-source-hint="cid:sml-ex3@example.com"
           data-id="quoted-header-block:C3000002-0000-0000-0000-\
                                                       000000000001">
        <span data-source-hint="cid:sml-ex3@example.com"
              data-id="quoted-header:C3000003-0000-0000-0000-\
                                                       000000000001">
          <b>From:</b> Grace Kim &lt;grace@example.com&gt;
        </span>
        <span data-source-hint="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-hint="cid:sml-ex3@example.com"
              data-id="quoted-header:C3000003-0000-0000-0000-\
                                                       000000000003">
          <b>To:</b> Frank Osei &lt;frank@example.com&gt;;
          Heidi Mueller &lt;heidi@example.com&gt;;
          Ivan Santos &lt;ivan@example.com&gt;
        </span>
        <span data-source-hint="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-hint="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>

9.3.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",
    "@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 Mueller",
      "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": {
      "@id": "mailto: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": {"@id": "mid:msg-ex3-002@example.com"},
    "attribution": {
      "@id": "quote-attribution:C3000005-0000-0000-0000-000000000001"
    },
    "content": {"@list": [
      {"@id": "text-content:C3000004-0000-0000-0000-000000000001"},
      {"@id": "quoted-content:C3000001-0000-0000-0000-000000000002"}
    ]}
  },
  {
    "@context": "https://sml.draft.iana.org",
    "@type": "QuotedContent",
    "@id": "quoted-content:C3000001-0000-0000-0000-000000000002",
    "message": {"@id": "mid:msg-ex3-001@example.com"},
    "headerBlock": {
      "@id":
        "quoted-header-block:C3000002-0000-0000-0000-000000000001"
    },
    "content": {"@list": [
      {"@id": "text-content:C3000004-0000-0000-0000-000000000002"}
    ]}
  },
  {
    "@context": "https://sml.draft.iana.org",
    "@type": "QuoteAttribution",
    "@id": "quote-attribution:C3000005-0000-0000-0000-000000000001",
    "date": {"@id": "mid:msg-ex3-002@example.com#dateSent"},
    "from": {"@id": "mailto:heidi@example.com"}
  },
  {
    "@context": "https://sml.draft.iana.org",
    "@type": "QuotedHeaderBlock",
    "@id":
      "quoted-header-block:C3000002-0000-0000-0000-000000000001",
    "header": {"@list": [
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:C3000003-0000-0000-0000-000000000001",
        "property": {"@id": "https://schema.org/sender"},
        "value": {"@id": "mailto:grace@example.com"}
      },
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:C3000003-0000-0000-0000-000000000002",
        "property": {"@id": "https://sml.draft.iana.org/dateSent"},
        "value": {"@id": "mid:msg-ex3-001@example.com#dateSent"}
      },
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:C3000003-0000-0000-0000-000000000003",
        "property": {"@id": "https://schema.org/toRecipient"},
        "value": [
          {"@id": "mailto:frank@example.com"},
          {"@id": "mailto:heidi@example.com"},
          {"@id": "mailto:ivan@example.com"}
        ]
      },
      {
        "@context": "https://sml.draft.iana.org",
        "@type": "QuotedHeader",
        "@id": "quoted-header:C3000003-0000-0000-0000-000000000004",
        "property": {"@id": "https://schema.org/about"},
        "value": {"@id": "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"
  }
]

10. Security Considerations

TODO Security

11. IANA Considerations

This document has no IANA actions.

12. Normative References

[I-D.ietf-sml-structured-email]
Happel, H., "Structured Email", Work in Progress, Internet-Draft, draft-ietf-sml-structured-email-06, , <https://datatracker.ietf.org/doc/html/draft-ietf-sml-structured-email-06>.
[JSON-LD]
Kellogg, G., Champin, P.-A., and D. Longley, "JSON-LD 1.1", W3C REC-json-ld11-20200716, , <https://www.w3.org/TR/json-ld11/>.
[RFC2047]
Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text", RFC 2047, DOI 10.17487/RFC2047, , <https://www.rfc-editor.org/rfc/rfc2047>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC2392]
Levinson, E., "Content-ID and Message-ID Uniform Resource Locators", RFC 2392, DOI 10.17487/RFC2392, , <https://www.rfc-editor.org/rfc/rfc2392>.
[RFC3339]
Klyne, G. and C. Newman, "Date and Time on the Internet: Timestamps", RFC 3339, DOI 10.17487/RFC3339, , <https://www.rfc-editor.org/rfc/rfc3339>.
[RFC5322]
Resnick, P., Ed., "Internet Message Format", RFC 5322, DOI 10.17487/RFC5322, , <https://www.rfc-editor.org/rfc/rfc5322>.
[RFC6068]
Duerst, M., Masinter, L., and J. Zawinski, "The 'mailto' URI Scheme", RFC 6068, DOI 10.17487/RFC6068, , <https://www.rfc-editor.org/rfc/rfc6068>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC9562]
Davis, K., Peabody, B., and P. Leach, "Universally Unique IDentifiers (UUIDs)", RFC 9562, DOI 10.17487/RFC9562, , <https://www.rfc-editor.org/rfc/rfc9562>.
[SchemaOrg]
W3C Schema.org Community Group, "Schema.org", n.d., <https://schema.org/>.

Acknowledgments

TODO acknowledge.

Authors' Addresses

Phillip Tao
Apple Inc.
Arnt Gulbrandsen
ICANN
Ben Bucksch
Beonex