<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
        <!ENTITY nbsp "&#160;">
        <!ENTITY zwsp "&#8203;">
        <!ENTITY nbhy "&#8209;">
        <!ENTITY wj "&#8288;">
        ]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="std"
     docName="draft-loffredo-calext-jscontact-eai-00"
     ipr="trust200902"
     submissionType="IETF"
     updates="9553"
     version="3">
  <front>
    <title abbrev="EAI in JSContact">Internationalized Email Addresses in JSContact</title>
    <seriesInfo name="Internet-Draft" value="draft-loffredo-calext-jscontact-eai-00"/>
    <author fullname="Mario Loffredo" initials="M." surname="Loffredo">
      <organization>IIT-CNR/Registro.it</organization>
      <address>
        <postal>
          <street>Via Moruzzi, 1</street>
          <city>Pisa</city>
          <code>56124</code>
          <country>Italy</country>
        </postal>
        <email>mario.loffredo@iit.cnr.it</email>
        <uri>https://www.iit.cnr.it</uri>
      </address>
    </author>
    <author fullname="Robert Stepanek" initials="R." surname="Stepanek">
      <organization>Fastmail</organization>
      <address>
        <postal>
          <extaddr>PO Box 234</extaddr>
          <street>Collins St. West</street>
          <city>Melbourne</city>
          <region>VIC</region>
          <code>8007</code>
          <country>Australia</country>
        </postal>
        <email>rsto@fastmailteam.com</email>
        <uri>https://www.fastmail.com</uri>
      </address>
    </author>
    <date year="2026" month="October"/>
    <area>Applications and Real-Time</area>
    <workgroup>Calendaring Extensions</workgroup>
    <keyword>JSContact</keyword>
    <keyword>EAI</keyword>
    <abstract>
      <t>JSContact defines the EmailAddress object for representing an email
      address, but its address property is restricted to the ASCII syntax of
      an addr-spec in RFC 5322.  This document redefines that property to
      also support internationalized email addresses, as defined in RFC 6532.
      Since such values are incompatible with JSContact version 2.0, this
      document defines JSContact version 3.0.  This document updates
      RFC 9553.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" numbered="true" toc="include">
      <name>Introduction</name>
      <t><xref target="RFC9553"/> defines the EmailAddress address property as
      an addr-spec value conforming to <xref target="RFC5322" section="3.4.1"/>.
      That syntax does not allow non-ASCII characters in a mailbox local-part.
      However, Email Address Internationalization (EAI) <xref target="RFC6530"/>
      extends Internet mail to allow UTF-8 characters in email addresses.
      In particular,
      <xref target="RFC6532" section="3.2"/> defines the relevant extensions
        to the syntax specified in <xref target="RFC5322"/>.</t>
      <t>This document extends the syntax of the EmailAddress address property
      to also allow internationalized email addresses and defines JSContact
      version 3.0, which succeeds version 2.0 <xref target="RFC9982"/>.</t>
    </section>

    <section anchor="conventions" numbered="true" toc="include">
      <name>Conventions and Terminology</name>
      <t>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
      <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>
      <t>In this document, an addr-spec that contains at least one non-ASCII
      character is called an internationalized email address.</t>
    </section>

    <section anchor="version" numbered="true" toc="include">
      <name>JSContact Version 3.0</name>
      <t>This document defines JSContact version "3.0".  The values newly
      permitted for the address property by <xref target="email-address"/>
      can be rejected by an implementation of JSContact version 2.0
      <xref target="RFC9982"/>, so this change is backwards incompatible
      according to <xref target="RFC9553" section="1.9"/> and requires a new
      major version.</t>
      <t>Implementations that create a Card containing an internationalized
      email address as defined in <xref target="conventions"/>
      <bcp14>MUST</bcp14> set the Card version property to "3.0" or a later
      version that permits such an address.  In contrast, every Card that is
      valid according to JSContact version 2.0 is also valid according to
      version 3.0.  Existing data therefore does not need to be migrated merely
      because version 3.0 has been defined.</t>
      <t>Except for the change defined in this document, all JSContact version
      2.0 definitions remain unchanged.</t>
    </section>

    <section anchor="email-address" numbered="true" toc="include">
      <name>Redefined EmailAddress address Property</name>
      <t>This section replaces the definition of the address property in
      <xref target="RFC9553" section="2.3.1"/>.  Its type signature and
      mandatory status do not change.</t>
      <t>OLD:</t>
      <blockquote>
        <t>address: String (mandatory).</t>
        <t>The email address.  This <bcp14>MUST</bcp14> be an addr-spec value as defined in
        <xref target="RFC5322" section="3.4.1"/>.</t>
      </blockquote>
      <t>NEW:</t>
      <blockquote>
        <t>address: String (mandatory).</t>
        <t>The email address.  This <bcp14>MUST</bcp14> be an addr-spec value as defined in
        <xref target="RFC5322" section="3.4.1"/>, extended to support UTF-8 as specified
        in <xref target="RFC6532" section="3.2"/>.</t>
      </blockquote>
      <t>This document does not define normalization or comparison rules for
      email addresses.  The syntax and interpretation of internationalized
      email addresses, including the representation of non-ASCII domain
      names, are as specified in <xref target="RFC6532"/> and the documents
      it references.</t>

      <section anchor="example" numbered="true" toc="include">
        <name>Example</name>
        <figure>
          <name>Card Containing an Internationalized Email Address</name>
          <sourcecode type="json"><![CDATA[
{
  "@type": "Card",
  "version": "3.0",
  "language": "zh-Hans",
  "name": {
    "components": [
      { "kind": "given", "value": "测试" },
      { "kind": "surname", "value": "用户" }
    ]
  },
  "emails": {
    "e1": {
      "address": "用户@例子.example"
    }
  }
}
          ]]></sourcecode>
        </figure>
      </section>
    </section>


    <section anchor="interop" numbered="true" toc="include">
      <name>Implementation and Interoperability Considerations</name>
      <t>How to interoperate with systems that do not support version 3.0 or
      later is specific to the protocol used to exchange JSContact data and
      is out of scope for this document.</t>
      <t>Converting internationalized email addresses from and to vCard
      <xref target="RFC6350"/> is out of scope for this document; it is
      addressed in <xref target="I-D.ietf-calext-rfc9555bis"/>.</t>
    </section>

    <section anchor="iana" numbered="true" toc="include">
      <name>IANA Considerations</name>
      <section anchor="iana-version" numbered="true" toc="include">
        <name>Update to the JSContact Version Registry</name>
        <t>IANA is requested to add the following entry to the "JSContact
        Version" registry in the "JSContact" registry group:</t>
        <table>
          <name>JSContact Version Registry</name>
          <thead>
            <tr><th>Major Version</th><th>Highest Minor Version</th><th>Reference</th></tr>
          </thead>
          <tbody>
            <tr><td>3</td><td>0</td><td>This document</td></tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-property" numbered="true" toc="include">
        <name>Update to the JSContact Properties Registry</name>
        <t>IANA is requested to add a reference to <xref target="email-address"/>
        of this document to the "Reference or Description" field of the
        address property in the EmailAddress context in the "JSContact
        Properties" registry.</t>
      </section>
    </section>

    <section anchor="security" numbered="true" toc="include">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC9553" section="4"/>
      apply.  In addition, the security considerations for email addresses in
      <xref target="RFC5322"/> and <xref target="RFC6532"/> apply.</t>
      <t>Allowing non-ASCII characters in email addresses increases the risk
      that visually similar characters will be mistaken for one another.
      This can be used to create an address that appears to a user to be
      another address.  User interfaces <bcp14>SHOULD</bcp14> make potentially
      deceptive characters or labels apparent and <bcp14>SHOULD</bcp14>
      provide a way to inspect the exact address.  Implementations
      <bcp14>MUST</bcp14> preserve the complete address and
      <bcp14>MUST NOT</bcp14> use display similarity as evidence that two
      addresses identify the same mailbox.</t>
    </section>
  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5322.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6532.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9553.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9982.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6350.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6530.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-calext-rfc9555bis.xml"/>
      </references>
    </references>
  </back>
</rfc>
