The iCalendar standard defines the notion of organizer and attendees (users, groups, resources,...) for scheduling purpose. Those are identified by "calendar user addresses" which in practice are generally mailto: URIs:
The CalDAV scheduling draft offers a way for a client to discover which calendar user addresses are associated with a particular user through the use of the CALDAV:calendar-user-address-set property.
This property can then be used in different ways, depending on the context:
- When creating a meeting invitation, it can be used to set the ORGANIZER property value.
- When fetching events from the server, it can be used to determine whether the owner of the calendar is the organizer or an attendee of the meeting by comparing the addresses returned in the calendar-user-address-set with the ORGANIZER and ATTENDEE values.
Client applications need to take into account a few points when doing this comparison though:
First of all, the calendar-user-address-set property is multivalued: a user may have both mailto:email@example.com and mailto:firstname.lastname@example.org defined as valid calendar addresses. So CUAs need to look for both values when comparing with the ORGANIZER/ATTENDEE values.
Then, when using mailto: URIs, there is no clear definition of how two such URIs should be compared for equality (as far as I know). For example, if one follows the SMTP definition, the local part of an email address is case sensitive. In the context of a calendar client though, I think it makes sense to:
- try to preserve the original case when storing calendar addresses.
- but do case insensitive comparison wherever a comparison is required.