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…

0

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…

0

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…

2

Using the EmailMessage.Normalize method in a transport agent causes issues with Exchange Server 2013 CU7

I received a report that if you have an existing transport agent and use the method Microsoft.Exchange.Data.Transport.Email.EmailMessage.Normalize(), the transport agent won’t work correctly on Exchange Server 2013 CU7.  This is because of a known issue where the public signature of this method was changed and so existing transport agents will need to be recompiled to work…

0

Automatic reply: Your Out of Office code may no longer work

In Exchange 2007, Out of Office (OOF) was improved and how the mechanism worked was changed.  To support legacy Outlook 2003 clients which didn’t use SetUserOofSettings like Outlook 2007 and Outlook Web App 2007 did, the Out of Office Mailbox Assistant was created. The OOF Mailbox Assistant had several responsibilities, here are the ones relevant…

0

PRXF_IGNORE_SEC_WARNING doesn’t work in MAPI CDO

The flag PRXF_IGNORE_SEC_WARNING doesn’t work in MAPI \ CDO as it should.  The flag was introduced to support RPC over HTTP in the updated MAPI \ CDO that was released around the time of Exchange Server 2013’s release.  The flag is supposed to instruct the MAPI subsystem to use this flag RPC_C_HTTP_FLAG_IGNORE_CERT_CN_INVALID when configuring the…

2

EXHTTP settings don’t appear in Exchange 2013’s Autodiscover response

MAPI clients wishing to get the correct Autodiscover settings for Exchange 2013 need to get the EXHTTP nodes in the Autodiscover response to configure the client correctly.  However, the Plain Old XML (POX) Autodiscover will not return this information if the client is not above a certain version of Outlook.  Furthermore, the authentication packages may appear…

2

IMAPISession::OpenAddressBook returns E_NOINTERFACE when providing an IID

I am currently troubleshooting an issue and wrote some code in an effort to reproduce it.  However, when my program called into IMAPISession::OpenAddressBook and gave the IID IID_IAddrBook for the lpInterface parameter it would return E_NOINTERFACE.  This puzzled me because the method returns a pointer to the IAddrBook interface so it should “support” this interface. …

0

VSTO based Custom Task Panes (CTP) may cause memory leak in Outlook

I have been wanting to post this for awhile but never got around to it. I have only seen two cases of this so I guess my procrastination is justified.  If you are using Visual Studio Tools for Office 3.0 you may experience a memory leak when using Custom Task Panes (CTP) within Outlook.  There are…

1

S/MIME.NET

I recently had a case where a customer wanted to know how to create S/MIME messages.  We have an existing KB that demonstrates how to send S/MIME messages using CDO for Windows 2000 (CDOSYS) and CAPICOM.  However, he wanted a pure .NET based solution. Unfortunately, a pure .NET solution is not possible without writing a…

2