InfiniTec - Henning Krauses Blog

Don't adjust your mind - it's reality that is malfunctioning

Exchange library updated again

Again, an update on my exchange library.

This update fixes a bunch of issues (many thanks to Mr. Heinen for his input), and some new features, as listed in the change log below.

Messing with distribution lists

This release adds experimental support for distribution lists in exchange folder. But instead of relying on the OWA commands to decode them (as described here), I decoded the binary member properties. Turned out, that the entry ids contained in that folder can be translated into a permannt url.

This release allows only read-only access to the member list.

The Members property of the DistributionList class returns a list of IAddressEntry instances. This interface currently exposes only one property, the name of the element. The element is one of the following:

  • User - A reference to an Active Directory user.
  • Contact - A reference to an Active Directory contact
  • Group - A reference to an Active Directory group
  • DistributionList - A nested distribution list
  • EmailAddress¬†- A so called One-Off member. This is just name with an email address.

Calendar permissions

When giving other people access to a calendar folder on a mailbox, it's not enough, to set those permissions on the calendar folder itself. The trustee must be given access to the local free busy data as well (This folder resides in the NON_IPM_SUBTREE/FreeBusy Data folder). The Mailbox class now returns a special folder instance for the mailbox.Calendar folder which handles this. More information on this topic can be found here.

Changelog for version 0.99

  • Connection class now implements IDisposable (explicit implementation) and has a Close() method. Call either of these methods to close the underlying active directory connection.
  • Optimized the resolution of mailbox urls.
  • Added DistributionList class, which provides read-only access to the members of a distribution list stored on an Exchange folder.
  • Added new CalendarFolder class, which is returned from the Mailbox class. This class propagates security changes made to the folder to the local free/busy folder, as described in KB (237924). See
  • Fixed several NullReferenceExceptions
  • Fixed some issues with TaskItem and CalendarItem
  • Added some validation logic to TaskItem and CalendarItem
  • Added some auto-calculations to the TaskItem an CalendarItem (e.g. End = Start + Duration and so on, modifying IsAllDayEvent accordingly)
  • Added the GetContent and SetContent functionality to the Item class
  • Fixed a bug with the PUT method (and the SetContent functionality as well)
  • Fixed a bug with setting the Free/Busy property on CalendarItems
  • Fixed a bug in the save method which occured when the Save operation was called when no properties were changed.
  • The SetContent and Attachment.Add methods now require a content type to be specified
  • New Class WellknownContentTypes, which has some definitions of common content types.
  • Renamed the FreeBusyType OOF to OutOfOffice
  • Removed the SearchScope property from the SearcherBase class, as it was redundant. Use the Scope property instead.

Downloads (2,023,427 Bytes)
All-in-wonder package, including source, binaries, documentation and example application.


Posted by Henning Krause on Saturday, January 27, 2007 12:00 AM, last modified on Saturday, January 27, 2007 12:00 PM
Permalink | Post RSSRSS comment feed