So far as I can see:
- The MAPI implementation for Exchange that comes with Outlook depends on the current user's Outlook and so is unsuitable for use in non-interactive programs.
- Also, the CDO (COM wrappers for MAPI) implementation that comes with Outlook doesn't work if Outlook isn't the default mail client.
- Exchange doesn't provide access through IMAP to other users' mailboxes, even though they are shared and visible in Outlook.
- Exchange doesn't provide access through IMAP to custom message flags.
- Exchange doesn't provide access to other users' mail filtering rules along with access to their mailboxes (or possibly this is a limitation of Outlook).
- One or other of them turns plain-text emails into rich text for no apparent reason.
The consequences of this are:
- I have to use IMAP for non-interactive mail automation on Exchange (unless I want to write an extension to run on Exchange itself, at the risk of crashing it).
- I have to have the password for a shared mail account that I want to do automatic processing on instead of just being given certain access rights over the associated mailboxes.
- I have to abuse some standard flag to mark which messages have been processed. (I thought of using \Seen but that would mean messages that people look at in a normal MUA might never be processed.)
- I had to log in to this account interactively to find out why and how messages were unexpectedly not appearing in its inbox.
- My regexp doesn't match the converted messages.
So much for "developers developers developers", eh? But maybe I just missed something.
Updated with yet another annoyance.