Internet-Draft Structured Quoted Content July 2026
Tao, et al. Expires 7 January 2027 [Page]
Workgroup:
Structured Email
Internet-Draft:
draft-ietf-sml-structured-quoted-content-00
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 7 January 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. 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

* 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

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

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:

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:

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

<!-- 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 &lt;bob@example.com&gt;<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 &lt;alice@example.com&gt;<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 &lt;alice@example.com&gt; 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",
    "@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": [{
      "@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"
      },
      {
        "@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"
  }
]

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

<!-- 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
    &lt;dave@example.com&gt; 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 &lt;carol@example.com&gt;<br>
        <b>Sent:</b> Monday, October 6, 2025 9:00 AM<br>
        <b>To:</b> Dave Nguyen &lt;dave@example.com&gt;; Eve Larsson &lt;eve@example.com&gt;<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

[
  {
    "@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": {
      "@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"
    ]
  },
  {
    "@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"]
      },
      {
        "@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

<!-- 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
    &lt;heidi@example.com&gt; 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 &lt;grace@example.com&gt;
        </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 &lt;frank@example.com&gt;; Heidi Müller &lt;heidi@example.com&gt;; Ivan Santos &lt;ivan@example.com&gt;
        </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

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

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, , <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, , <https://www.rfc-editor.org/rfc/rfc8174>.

Acknowledgments

TODO acknowledge.

Authors' Addresses

Phillip Tao
Apple Inc.
Arnt Gulbrandsen
ICANN
Ben Bucksch
Beonex