Outlook sends 3DES when I’ve chosen AES 256

We see this as common question in Microsoft Support so I wanted to lay out the approach Outlook for Windows takes to determine what encryption algorithm is chosen when sending encrypted email to a recipient. First, know that when choosing algorithms Outlook determines what both the sender and recipient supports.  Although it will refer to…


Time Travel Debugging now in preview

I know I’m a little late to the party, but I just came across this and I’m very excited about its release.  I’ve been using TTD for over 10 years internally and it is an awesome tool to capture issues that just won’t reproduce themselves easily.  From a support perspective it’s been amazing. Time Travel…


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…