Re: '#' in mailto URIs

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.

-- 
Michael

Received on Friday, 16 October 2009 00:55:52 UTC