Subject: OT: Are mailto URI argument names caseful?

From: Michael Haardt <[email-masked]>
Date: Mon, 07 Aug 2006 15:01:01 +0200

Hello,

I am currently working on mailto notifications (so I am not entirely
off-topic;) and came accross a problem:

Are argument hnames in the query part of mailto URIs caseful?

RFC 2368 does not tell if the argument hnames resulting from splitting
the query part into pieces are caseful or not.  Neither does
draft-duerst-mailto-bis-02.  I did not get a response from asking the
authors.

In general, RFCs describing specific schemes must state if anything
is to be considered caseless.  Nothing is said -> caseful.

Hnames are caseless -> caseless.

Who will get a message resulting from the URI below and how will it
look like?

mailto:?to=[email-masked]&TO=[email-masked]

Using caseful names, the message would go to [email-masked], but
listing both recipients in the header, in case the client trusts the
message.  In case it does not and allows only safe headers, the message
would go to [email-masked] and only listing that address in the header.

Any hints towards references I overlooked will be appreciated.
Please respond by private mail and I will summarise.

Michael

---

From: Michael Haardt <[email-masked]>
Date: Fri, 11 Aug 2006 12:39:39 +0200

Hello,

recently I asked concerning the case of arguments to mailto URIs and
promised to summarise.  Thanks a lot for all answers!

Everybody agrees that the hname part of the argument should be case
insensitive.

RFC 2822 does not state that fact explicitly, but says all character
literals given as quoted strings are case-insensitive.  It proceeds
to specify all field names and header fields as quoted strings.  As a
result, field names don't have to be case insensitive as such, but all
field names within the scope of RFC 2822 are for sure and I never heard
of a field specified differently.

By now I got a late answer from the authors of the draft, acknowledging
the field names used in the draft are meant to be case insensitive.
I suggested to state it explicitly nevertheless, because the draft
also uses the special string "body", which is not (yet) a registered
field name.

> mailto:?to=[email-masked]&TO=[email-masked]

The answer is: The message will go to both recipients and it will contain
one "To:" field, listing both.  The implementation is obviously free to
change the field name case and add a space after the colon, a fact that
should be specified clearly, too.

Sometimes things just work the way you expect them to. :-)

Michael