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.


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…


MAPI CDO will not be supported for Exchange 2016

I wanted to point out a significant note for some in the Exchange 2016 Architecture blog post here :  Specifically, that Exchange 2016 will not support clients using Exchange’s MAPI (aka MAPI \ CDO) to access Exchange Data.  Exchange’s MAPI has been out of main stream support for some time now (as it’s tied…


Cool MFCMAPI Feature: Logging every MAPI function called

Wanna learn Extended MAPI?  Sure, we all do.  Well most likely not, but in every project there comes a time when you need to add a feature and you don’t know where to start.  MFCMAPI can be helpful in figuring out what to do in Extended MAPI if you don’t know where to start. Here…


HrGetServerDN fails with MAPI_E_CALL_FAILED (0x80004005)

In Exchange 2013 Cumulative Update 3, Exchange stopped stamping the property HomeMTA on the user object in Active Directory. As a result PR_EMS_AB_HOME_MTA_A, a property that HrGetServerDN() depends on no longer works.  HrGetServerDN() is a function from the Exchange Development Kit (EDK) for Exchange 5.5.  It is not supported or recommended for any version of…