About: Messaging APIs

There are many different types of APIs which are focused on mailbox access, administration and care.  There are different ways to approach APIs when looking for one to use for your messaging project.  This article categorizes APIs by type.  Knowing the type of application is needed at the start will help guide you to picking the correct API.

Mailbox Access APIs:

These APIs are used to access folders and items inside mailbox and public folder stores.  These are the APIs used to create mail client applications.  They have varying levels of business logic available - not all APIs have objects for working with specialized item types like contacts, appointments, tasks, etc. These APIs do not do administrative tasks and do not send email directly by SMTP.

About: Mailbox accessing APIs
https://blogs.msdn.com/b/webdav_101/archive/2015/05/28/about-mailbox-accessing-apis.aspx

SMTP Senders:

These APIs are used for sending mail via the SMTP protocol - they are not Exchange or Outlook specific.  These APIs are meant to work with any RFC compliant SMTP server.  They are shipped as either part of the Windows OS or with the .NET Framework.  They do not have the ability to access mailbox or public folder content.  They also cannot do administrative tasks.

About: SMTP Sending APIs
https://blogs.msdn.com/b/webdav_101/archive/2015/05/28/about-smtp-sending-apis.aspx

Exchange Management APIs:

Management includes tracking and statistics as well as mailbox creation and store management.   From Exchange 2007 and forward PowerShell is used to invoke Exchange PowerShell cmdlets for administrative actions.   A cmdlet is in essence a PowerShell command. PowerShell is a very robust scripting language and different prodcuts have their own set of specialty cmdlets.  Exchange also has its own set of these cmdlets, which are very specific to Exchange administration.  Exchange cmdlets don't access individual items in folders.

About: Exchange PowerShell Automation
https://blogs.msdn.com/b/webdav_101/archive/2015/05/18/about-exchange-powershell-automation.aspx

Transport  Event Technologies:

Basically these let you fire off code while a messaging is in SMTP transport - i.e. between the client and the mailbox.  Transport events are related to the SMTP protocol and these technologies provide event notifications as messages travel in to and out of the organization or between mailboxes and servers within the organization.  All of these technologies provide events of a message in transit after - outside of a mailbox or public folder - the items in these events are in MIME format rather than MAPI.  Item access in these events is provided by one of the SMTP APIs. They do not have access to items in a mailbox because they operate on items while in transport - which is before they reach a mailbox.  Be sure to keep all code you write as lean as possible.  Its best to write to a custom event log only as needed.  The reason for doing those things is that transport code handles an incredible amount of activity and needs to be extremely efficient so as not to impede performance which could become crippling to Exchange.

Exchange Backup APIs:

There are few APIs specifically created for backup and restore operations on the Exchange server.  These APIs are used by developers to create and implement their own backup applications that work specifically with Exchange.  While some developers may use APIs like Extended MAPI or EWS to implement backup solutions, these APIs were designed specifically for backup and restore operations and are what Microsoft recommends and supports for such applications.  None of these APIs allow you to backup and restore individual items or do property by property backup and restore.

About: Exchange APIs to backup and restore data
https://blogs.msdn.com/b/webdav_101/archive/2015/06/01/about-exchange-apis-to-backup-and-restore.aspx

Mailbox Event/Notification APIs:

One with developing code for messaging development is to have code run when a specific event happens on a mailbox item or folder.  Each mailbox API has its own ways of handling calls.  Below is an overview of APIs which support events on the mailbox.

About: Mailbox event and Notification APIs
https://blogs.msdn.com/b/webdav_101/archive/2015/08/07/about-mailbox-event-and-notification-apis.aspx

UI Customization Technologies:

These technologies are used to customize either the Office Outlook client or Exchange Outlook Web Access.  For the most part there is very little correlation between customization for Outlook and OWA.  Both use one of the standard mailbox access APIs for retrieving item information and then use one the following technologies as a framework for hooking into and customizing the UI.  Mail Apps for look is a cross client API which works in Outlook and in OWA. 

About: Mail Apps for Outlook
https://blogs.msdn.com/b/webdav_101/archive/2015/08/07/about-mail-apps-for-outlook.aspx

About: VSTO for Outlook
https://blogs.msdn.microsoft.com/webdav_101/2016/08/08/about-vsto-for-outlook/

Other:

    • MAPI Forms
    • Outlook View Control
    • Outlook COM add-ins

Exchange specific:

Exchange versions prior to 2013 allowed for custom OWA forms. This was replaced with Mail Apps for Outlook.  Each version of Exchange had its own way in which custom OWA forms needed to be written. Its also possible to "brand" OWA (ie customize).  OWA is not supported in an IFRAME, however web parts (folder URLs) are.  Please read the following carefully.

OWA customization and development
https://blogs.msdn.com/b/webdav_101/archive/2015/05/14/owa-customization-and-development.aspx

Microsoft support policy for the customization of Outlook Web Access for Exchange
https://support.microsoft.com/en-us/kb/327178

Things not supported:

This covers a broad range of information on what is and is not supported.

Best Practices - What is supported and not.
https://blogs.msdn.com/b/webdav_101/archive/2015/05/06/ews-best-practices-what-is-supported-and-not.aspx

These cover common no-support development scenarios:

Developer support limitations for public protocols 
https://support.microsoft.com/en-us/kb/2269506/en-us

"Enhancing Exchange" via unsupported methods.
 https://blogs.msdn.com/b/webdav_101/archive/2013/06/13/quot-enhancing-exchange-quot-via-unsupported-methods.aspx#10595997

Developer support limitations for public protocols 
https://support.microsoft.com/en-us/kb/2269506/en-us

HOWTO: Read unmounted Exchange EDB files.
https://blogs.msdn.com/b/webdav_101/archive/2008/09/03/howto-read-unmounted-exchange-edb-files.aspx

Best Practices - Enhancing EWS
https://blogs.msdn.com/b/webdav_101/archive/2015/05/05/best-practices-enhancing-ews.aspx

Using ISAPI Extensions to change-out OWA Credential is not supported
https://blogs.msdn.com/b/webdav_101/archive/2007/05/04/using-isapi-extensions-to-change-out-owa-credential-is-not-supported.aspx

Microsoft support policy for the customization of Outlook Web Access for Exchange
https://support.microsoft.com/kb/327178

Also See:

Events from mailbox activity
https://blogs.msdn.com/b/webdav_101/archive/2015/05/27/events-from-mailbox-activity.aspx

About: Messaging APIs
https://blogs.msdn.com/b/webdav_101/archive/2015/08/07/about-messaging-apis.aspx