(Note: the following refers to full, so-called Extended MAPI, not the Simple MAPI supported in VB and MFC. Simple MAPI has copious documentation, having first appeared in Microsoft Mail 3.0.)
Since MAPI not a product of the IETF, no RFC exists for it. It is part of Microsoft's Win32 API.
The MAPI SDK is part of every Win32 SDK released since July 1995. As such, every version of Microsoft Visual C++ since 2.2 has contained MAPI documentation. These documents also appear in MSDN I, while the sundry samples, header files, and tools that constitute the MAPI PDK all appear in MSDN II.
The Microsoft FTP server contains contemporary documentation and support material for MAPI. Here you will find the most recent MAPI documentation, as well as the source code to a number of sample applications.
Microsoft has finally seen fit to create their own MAPI development web site, containing technical articles, tools, and contemporary code samples. It's about time!
Irving de la Cruz and Les Thayer have written Inside MAPI, published by Microsoft Press, and now maintain a page of the book's errata on the Web. Don't even think of writing a MAPI service provider without first reading this book.
I have written Developing Applications for Microsoft Exchange with C++, also published by Microsoft Press, focusing on client extensions, form servers, and folder applications - i.e. applied MAPI.
David Boreham has compiled a page about MAPI that I'm sure you'll find more informative than this one.
An Internet mailing list of MAPI developers exists. Send a message to LISTSERV@PEACH.EASE.LSOFT.COM with the single line SUBSCRIBE MAPI-L. This mailing list maintains archives of previous messages.
On CompuServe, section 17 of the WINEXT forum ("MAPI Beta") contains some coverage of MAPI, with an informal Microsoft presence.
On public Usenet, the newsgroup comp.os.ms-windows.programmer.win32 contains occasional MAPI discussion. You will have better luck in the Microsoft-sponsored MAPI newsgroup, microsoft.public.win32.programmer.mapi, available on Microsoft's NNTP server msnews.microsoft.com (if you can't get it elsewhere).
You have four options, each addressing a different sort of application.
You can use a toolkit, such as the Application Design Environment included in Microsoft Exchange Server, or other third party solutions. Different toolkits will offer different development facilities. Some toolkits, such as the Forms Designer component of the Exchange Application Design Environment, emit source code which the developer may subsequently alter or amend. (The Exchange Forms Designer emits Visual Basic.)
You can write in Visual Basic or another ActiveX Automation (nee OLE Automation) client, to the OLE/Messaging API. OLE/Messaging is an ActiveX Automation server that offers a set of message objects to its clients. It appears in the Win32 and Back Office SDKs, and as part of the Microsoft Exchange Server Forms Designer. Learn more about it by reading about the OLE Messaging Library under Win32 Messaging (MAPI) in the Win32 SDK.
You can write in C or C++ to the Simple MAPI or CMC 1.0 APIs. (Simple MAPI is also accessible to Visual Basic clients.) These APIs are suitable for implementing a File - Send... command on an application's menu, or similarly bolting a couple of messaging-related functions onto an application primarily concerned with some other domain. Learn more about them by reading Introduction to MAPI Programming, Programming with CMC, and Programming with Simple MAPI in the Guide under Win32 Messaging (MAPI) in the Win32 SDK.
Finally, you can write in C or C++ to the full Win32 Messaging API. Start by familiarizing yourself with the Microsoft Component Object Model (COM). Next open the Win32 SDK and read most of the Guide under Win32 Messaging (MAPI). Skip anything that talks about developing providers. See above for further sources of information on MAPI.
Search the Exchange Application Farm (part of the Microsoft Technet Reference Desk) for samples of several kinds of Exchange application.
Anything capable of generating an in-process component object server. C or C++ are the usual choices.
Note that Microsoft Visual C++ contains all necessary header files and libraries for MAPI development in its releases subsequent to the July 1995 Win32 SDK, i.e. 2.2 and 4.0, as I imagine do all Win32-targeting compilers from other vendors. If you have MSVC 2.2, you still will need documentation, either from MSDN I or from the release points detailed above; versions 4.0 and thereafter contain MAPI documentation as part of their Win32 documentation. (It still wouldn't hurt to obtain the most recent version.)
The precise interfaces are set forth in Extending the Microsoft Exchange Client under Win32 Messaging (MAPI) in the Win32 SDK.
Quite a lot, actually. You can write applications using OLE/Messaging. You can also modify the e-form applications emitted by the Exchange Server Forms Designer. The Microsoft Technet Exchange Application Farm offers many examples of this, using the VB-centric Exchange Application Design Environment. Peter Krebs wrote an entire book on this topic, Building Microsoft Exchange Applications, published by Microsoft Press.
However, you cannot write an Exchange client extension like Internet Idioms in VB. The best you can do is write a old-style Microsoft Mail 3.0 extension, as documented in the Microsoft Mail 3.0 Technical Reference, then hope that Exchange emulates the Microsoft Mail interfaces sufficiently closely to run your application.
To create a custom rule, implement a library similar to that for Exchange client extensions, but instead offering objects that support IExchangeRuleExt, then install that library on every workstation that will support the custom rule. This interface appears in the BackOffice 2.0 SDK header file exchcli.h, which also contains documentation for the interface and its environment.
Releases of the BackOffice 2.0 SDK since July 1996 contain the CRARUN sample, implementing this interface.
As you might expect, Microsoft keeps a pile of marketing literature on its web site. You can also look through the sites named at Microsoft's Exchange Server Community site, which exists to coordinate peer support resources.
David Boreham keeps his own page on Exchange Server as well.
Don Adams keeps a very interesting Exchange page, demonstrating Exchange Server clients using Citrix WinFrame.
Syscom Consulting Inc. maintains an indexed, searchable archive of the Microsoft Exchange Server mailing list, a list consisting of Exchange Server administrators and (apparently) some confused Windows 95 "Windows Messaging" end users who wandered onto the list by mistake.
Stephen A. Gutknecht has compiled an Exchange Server FAQ from the traffic on this list.
On public Usenet, the newsgroup comp.os.ms-windows.nt.software.backoffice contains occasional Exchange Server discussion. As with MAPI, you will have better luck in the Microsoft-sponsored Exchange Server newsgroups, microsoft.public.exchange.*, available on Microsoft's NNTP server msnews.microsoft.com (if you can't get them elsewhere). Developers will find microsoft.public.exchange.applications particularly pertinent.
This information originally from http://www.halcyon.com/goetter/mdevfaq.htm
and was written by Ben Goetter