- From: Silvia Pfeiffer <silviapfeiffer1@gmail.com>
- Date: Fri, 16 Oct 2009 13:43:45 +1100
- To: "Michael A. Puls II" <shadow2531@gmail.com>
- Cc: Julian Reschke <julian.reschke@gmx.de>, Larry Masinter <masinter@adobe.com>, Martin J. Dürst <duerst@it.aoyama.ac.jp>, "jwz@jwz.org" <jwz@jwz.org>, "PUBLIC-IRI@W3.ORG" <PUBLIC-IRI@w3.org>
On Fri, Oct 16, 2009 at 11:55 AM, Michael A. Puls II <shadow2531@gmail.com> wrote: > On Thu, 15 Oct 2009 04:47:08 -0400, Julian Reschke <julian.reschke@gmx.de> > wrote: > >> Michael A. Puls II wrote: >>> >>> ... >>> Actually, I think we should just look at how clients handle # in mailto >>> URIs. >>> 1. msimn.exe /mailurl:mailto:?body=before#after >>> 2. opera.exe mailto:?body=before#after >>> 3. opera.exe page.html (where page has <a >>> href="mailto:?body=before#after">click me</a>) >>> 4. sylpheed.exe --compose mailto:?body=before#after >>> 5. thunderbird31.exe mailto:?body=before#after >>> All those mail clients (except for the #2 situation where Opera's >>> address field's URI parser splits up the URI into its pieces and Opera's >>> mail code doesn't recompose the URI right (forgets the fragid part) before >>> parsing) emit "before#after" in the body field of the compose window instead >>> of just "before". That says that for mailto, # should just be treated >>> literally as a non-reserved character like a-zA-Z0-9 etc. is. >>> (Note that IE's address field can do what Opera does for #2 too before >>> it passes the URI to the mail client.) >>> So, I'd rather just say that for mailto URIs, # is just another >>> character and any client that doesn't follow that notion should be fixed. >>> ... >> >> Nope. Treating "#after" as fragment in a URI is what RFC 3986 defines. We >> should not require clients to violate the base specification. >> >>> However, if others are not fine with that, in addition to the proposed >>> text quoted above, it should be said 'why' you should not use # in mailto >>> URIs. The reason of course would be that whether the # gets treated as part >>> of a header field value or whether the URI gets chopped off at the first # >>> depends on the client and situation. It should also be explicitly mentioned >>> that if you need a # to be part of a header field value, you should use %23 >>> instead. >> >> ...must... > > So, because of RFC3986's definition of #, all mail clients encountering > "mailto:?body=before#after" must only put "before" in the body field of the > compose window? > > If so, that, means I have bugs to file for Opera, Thunderbird, Sylpheed, > probably Outlook if it does like Outlook Express, and any other clients that > put "before#after" in the body field in that situation. > > Now, what does RFC3986 say about the case where you click on a link to > "mailto:?body=before#after" or enter "mailto:?body=before#after" in the > address field. Is "#after" part of the URI and "mailto:?body=before#after" > must be passed to the mail client, or is "#after" not part of the URI and > "mailto:?body=before" must only be passed to the mail client? > > If no RFC or spec says anything about that, what is your personal > expectation? > > Depending on the answer, I have bugs to file for IE and Opera or Firefox and > Safari. The main problem that I see is where "#" is being used multiple times in such a uri, e.g. mailto:?subject=asdf#ghij&body=before#after Per RFC3986, the first "#" creates the fragment, so the body is never regarded as another query parameter. I would think that "#" has to be escaped in mailto uris. If there weren't multiple query parameters in a mailto uri, one could simply make the user agent append the fragment part to the query parameter data to get around the contradiction, but that is not possible with multiple "#" parameters. Regards, Silvia.
Received on Friday, 16 October 2009 02:44:40 UTC