Evolution Connector for Microsoft Exchange Programmer’s Reference Manual |
---|
Other Users' Folders |
Most operations concerning other users' folders are handled by
ExchangeHierarchyForeign
,
with some help from
ExchangeAccount
.
When the user first tries to add another user's folder,
ExchangeAccount
looks up the user in the Global Catalog, passing the
E2K_GLOBAL_CATALOG_LOOKUP_EMAIL
and
E2K_GLOBAL_CATALOG_LOOKUP_MAILBOX
flags to
e2k_global_catalog_lookup()
.
The exchange_server
and
mailbox
fields in the returned
E2kGlobalCatalogEntry
are then used to construct a URL (using the account's SSL settings).
Note
(One problem with this approach is that the returned
exchange_server
is not guaranteed to be running
OWA. See Bug
258526.)
ExchangeAccount
then creates an
ExchangeHierarchyForeign
from that data, and asks it to subscribe to the requested folder.
ExchangeHierarchyForeign
looks for the folder in two different ways. First, it tries using the
literal folder name that the user provided.
If that fails, and if the folder name is one of the default folder
names (eg, "Calendar"), then it tries looking up the
urn:schemas:httpmail:
property for that folder (eg,
urn:schemas:httpmail:calendar
) on the other user's
mailbox. (Specifically, it looks for the property on the invisible
/NON_IPM_SUBTREE
subdirectory of the user's mailbox,
because the property won't be readable on the top-level directory
unless the user has permission to read the top-level directory.) This
allows the folder to be found even if it has a localized name (eg,
"Calendario").
Private items
Outlook allows the user to mark items in folders as "private". (Evolution allows this in Calendar and Task folders, but not Contact or Mail folders.) Private items are not supposed to show up when other users view the folder, unless they have been given explicit permission to view private items in the Delegates dialog. However, Exchange does not actually enforce this itself, so we have to work around this.