If you've been bit by the problems with the web download of CDO 1.21 returning a 8004011D when trying to access an Exchange 2003 server then this post may help you out.

 

First the history of the problem and then what options are available to avoid this issue.  So as you probably already know, with Exchange 2007 we don't have to have a Public Folder tree.  This new scenario is the main cause behind this problem with the downloadable version of CDO 1.21.  Steve Griffin does a great job of explaining how this came into being and where the CONNECT_IGNORE_NO_PF flags comes from in his post.

 

So with the downloadable versions of the CDO 1.21 library, this flag is passed by default now, remember this download was intended for use in a Outlook 2007 / Exchange 2007 environment.  So this really isn't a big deal right?  Wrong, the problem occurs when we use these CDO 1.21 web download bits and try to access an existing Exchange 2003 server.  The result is your code fails with an error: 8004011D (MAPI_E_FAILONEPROVIDER error or "The Server is not available") error when trying to access the Exchange 2003 server.  The reason is that the Exchange 2003 server you are trying to access doesn't know how to handle this new flag its being passed and returns this error.

 

Luckily there are now two options to approach this issue and I've documented them for your reading pleasure:

  • Make sure that your Store on your Exchange 2003 server is updated to the latest security fix.  Why?  These updates now include logic for the store to recognize the new the CONNECT_IGNORE_NO_PF flags that CDO 1.21 passes.  So if you update your server, you may not have to do anything else, you can use the downloadable CDO 1.21 normally without having to anything else or make any other changes.  And you'll still be able to access your Exchange 2007 server without a worry.

KB Article 929751 documents/explains the changes for Store so that the it will properly recognize the new flags.

  • The other option is to use the updated CDO 1.21 web download (Available since the August 1st) and you will be able to set the option whether or not CDO 1.21 will pass these flags or not.  The setting to control whether or not CDO 1.21 will pass these flags is added to the registry.  (CDO 1.21 version 06.06.7940 or greater) 

The registry changes required to make this work needs to be set as follows:

 

HKLM\Software\Microsoft\Windows Messaging Subsystem\CDO

"Ignore No PF"

DWORD

Value: 1 :  Means CDO will send the "CONNECT_IGNORE_NO_PF".  Anything else, we won't send the flag.  The default behavior with this update is to not send the flag.

 

For accessing Exchange 2003 servers, I suspect that as the updates to store get out there and people get them installed on their 2003 servers, this will be less of an issue. But with this update, there is another complexity to be aware of here is that now with the default configuration of the CDO 1.21 web download being that we don't pass the "CONNECT_IGNORE_NO_PF" flag, and you try to use these binaries in environments with no Public Folder stores on Exchange 2007, you will fail until you change the key to 1.

Resources:

 

The link to the web download for CDO 1.21 is here:

http://www.microsoft.com/downloads/details.aspx?FamilyId=2714320D-C997-4DE1-986F-24F081725D36&displaylang=en

 

The link to the web download for CDO 1.21 and MAPI is here:

http://www.microsoft.com/downloads/details.aspx?FamilyId=E17E7F31-079A-43A9-BFF2-0A110307611E&displaylang=en