I've been developing Exchange and Outlook-centric applications for the
last 4 years or so, and now I can tell you that I have absolutely no
nerve endings in my forehead as a result (try bashing your head against
the table, keyboard or wall repeatedly for four or so years and you'll
see what I mean).
Developing applications for Outlook is an impossibly frustrating
task; from the lackluster documentation (MAPI documentation is scarce,
not to mention obfuscated and outdated) to unexpected behaviour
(Outlook COM API shutdown events never occur) to missing features in
high-level APIs (CDO is missing a lot of functionality, and Extended
MAPI can only be used from C++ code) to depracated critical features
(the password parameter for CDO.Session.Login is ignored outright). All
that if you readily ignore proper bugs (CDO session logoff taking
between 30 and 180 seconds, instead of - say - 0.02), COM Threading
Apartment issues (CDO can only be used from STA threads - say goodbye
to convenient remoting or web services) and the ghastly Outlook Object
Model guard which made creating an entirely new Extended MAPI wrapper necessary to write the simplest code even for secure enterprises. Are you getting my drift here?
I distinctly recall doing some Outlook add-in work for a guy on Rent A Coder; what was originally intended as an Outlook add-in template on which the guy can build his own code turned into a fully-fledged commercial application, because the buyer simply could not afford to learn Outlook/MAPI basics.
The good news for me was that the years of suffering resulted in my
becoming something of an Exchange/Outlook expert and that this kind of
knowledge pays very well indeed; the bad news are that it's literally
impossible to do an Outlook project without reducing your life
expectancy considerably (all you cardiologists must be really damn
pleased about that).
Anyways I just read that according to Eric Carter I must despair no more!
Apparently the new VSTO (Visual Studio Tools for Office) 2005,
currently in beta, includes a proper managed API for Outlook. Hurray!
Huzzah! Finally Microsoft delivers something for Outlook/Exchange
programmers that might not utterly suck. Break out the champagne, everyone - our torment is over!
NOT. Unfortunately the managed API for Exchange is nowhere in sight
(mind you, I've been promised an alpha version by a Microsoft premier
representative back in September 2003 or so), and Exchange/MAPI
programming is still a major hassle (what with the Exchange OleDB
provider not functioning under ADO.NET, CDO being STA-only requiring
workarounds, WebDAV being slow and often times irrelevant if Custom
Forms are used, TNEF specs few and far between etc.) All in all I'd
still rather choke than write an Exchange-based service. Fortunately it
still pays well enough for me to afford a guy sitting behind me
constantly, ready to invoke the Heimlich maneuver at any given moment.