How to create an profile that uses MAPI/HTTP in Outlook 2013

I had a case recently where the customer wanted to know how to programmatically create a MAPI over HTTP profile using Outlook 2013. A few years ago I had developed a little sample to do just that, but I never posted it.  Therefore, today I’m fixing my omission.  You can view the sample code here.


Access to the Recovery Database in Exchange Server 2016 from an application

I have had several customers interested in how to access the Recovery Database (RDB) programmatically in Exchange 2016.  Extended MAPI is the only way to access the Recovery Database programatically.  The Exchange MAPI subsystem (aka MAPI\CDO) is the only subsystem capable of accessing the Recovery Database.  This is because access to the Recovery database requires…


How to indicate that a profile targets a consumer account

I had a case recently where the customer was using my post for creating a Outlook 2016 profile programmatically and found that the program would hang when performing certain MAPI operations.  This only happened when the profile was created programmatically (i.e. not through the Outlook UI or the Mail applet) and the target account was…


Programmatically connecting to another mailbox when MAPI / HTTP is used

I’ve been meaning to create this post for a while, but haven’t got around to it. I had a case recently where a customer wanted to connect to a user’s Archive mailbox for which the service application had permissions.  However, the transport in use was MAPI over HTTP (MAPI/HTTP).  He was getting the error MAPI_E_CALL_FAILED (0x80004005)…


MAPILogonEx() may appear to hang in Outlook 2016

I had a case recently where the customer was had written a service application using Extended MAPI.  The customer found that in his test environment the call to MAPILogonEx() was hanging and not returning.  After debugging it, we realized that the hang was caused by an unseen SSL security prompt.  The target Exchange server hosting…


MAPILogonEx causes crash if Version Info is not specified on the module

I wanted to create a simple Extended MAPI application that would call MAPIInitialize() followed by MAPILogonEx().  Seems simple right?  I do it all the time.  However, this time, for whatever reason, every time I called MAPILogonEx() my process crashed.  No matter what flags I chose, or how I called either MAPIInitialize() or MAPILogonEx(), it would…


IMAPISession::OpenMsgStore() returns MAPI_E_VERSION (0x80040110)

As documented previously, Exchange 2016 will not allow connections from Exchange’s MAPI (aka MAPI \ CDO).  MAPI client applications may receive the error MAPI_E_VERSION (0x80040110).  If you are running On-Premises Exchange 2016 and have access to the RPC Client Access logs, you will see this error in the log around the time that the connection…


How to configure an Outlook 2016 profile using MFCMAPI

The process for creating a Outlook profile in Outlook 2016 has changed. This article documents the simple steps to create one using MFCMAPI.  Note: For non-developers this is not the recommended way of creating profiles in Outlook 2016.  It is recommended that you use Outlook to create the profile as the logic for this is…


How to use CDO 1.2.1 to connect to Exchange 2013 using a dynamic profile

NOTE: This article only applies to Exchange’s MAPI \ CDO download.  It doesn’t apply to using CDO 1.2.1 with an Outlook 2007 client. I was discussing an issue recently with a customer and I asked him to connect to the Exchange server using CDO 1.2.1.  Then I realized that I had never tried that myself. …


Async MAPI Notifications in Exchange are a problem for MAPI clients that impersonate

I had a case six months ago where the customer was using Exchange’s MAPI against Exchange 2013 and was seeing a number of MAPI_E_NETWORK_ERRORs in his application. After discussing the issue with him it was determined that the application was running in the security context of Local System but would impersonate a user who has…