RFC Errata
RFC 6068, "The 'mailto' URI Scheme", October 2010
Source of RFC: IETF - NON WORKING GROUPArea Assignment: app
Errata ID: 7919
Status: Reported
Type: Technical
Publication Format(s) : TEXT
Reported By: Mark Slater
Date Reported: 2024-05-01
Section 2 says:
1. A number of characters that can appear in <addr-spec> MUST be percent-encoded. These are the characters that cannot appear in a URI according to [STD66] as well as "%" (because it is used for percent-encoding) and all the characters in gen-delims except "@" and ":" (i.e., "/", "?", "#", "[", and "]"). Of the characters in sub-delims, at least the following also have to be percent- encoded: "&", ";", and "=". Care has to be taken both when encoding as well as when decoding to make sure these operations are applied only once.
It should say:
1. A number of characters that can appear in <addr-spec> MUST be percent-encoded. These are the characters that cannot appear in a URI according to [STD66] as well as "%" (because it is used for percent-encoding) and all the characters in gen-delims except "@" and ":" (i.e., "/", "?", "#", "[", and "]"). Care has to be taken both when encoding as well as when decoding to make sure these operations are applied only once.
Notes:
RFC 3986 does not require that sub-delimiters used in one component are encoded in other components. Specifically, RFC 3986 Section 2.1 (https://www.rfc-editor.org/rfc/rfc3986#section-2.1) states that a character requires encoding when it "is being used as a delimiter of, or within, the component."
According to RFC 3986, the mailto URI <mailto:Mike&family@example.org> is unambiguously the single addr-spec "Mike&family@example.org" because the path component of the mailto scheme does not use "&" as a sub-delimiter.
More comprehensively, the mailto URI <mailto:Mike&family@example.org?subject=Use%20of%20%26&body=Should%20be%20fine%20in%20addr-spec> must substitute "%26" for "&" in the value of the body header field because "&" is a query component sub-delimiter in the mailto scheme, but the query is the only component where this is required.