Exchange Online and Exchange development
Find in-depth developer documentation for Exchange Server, including Exchange Online as part of Office 365 and Exchange Server on-premises versions.
You can use the how to, get started, new feature, and API reference documentation to develop tools to access and manage mailbox data from services, websites, desktop computers, and mobile devices, and to create custom solutions for email, calendar, contacts, and other items that are stored in Exchange Online or on an Exchange 2010, 2013, 2016, and 2019 server.
You can use Graph API, REST API, Exchange Web Services (EWS), Autodiscover, Outlook add-ins, or other APIs to develop your applications. This page helps you choose the right Exchange technology.
Exchange developer content
Use the following table to identify the technology and related API content that will help you meet your development goals.
Microsoft Graph is the recommended API to use for accessing Exchange Online data. New applications designed to access Exchange Online data should use Microsoft Graph.
|If you are building...||Start here|
|A REST-based app to access Exchange Online as part of Office 365||Microsoft Graph REST APIs for mail, calendars, and contacts|
|A context-sensitive app to display information in Outlook, Outlook Web App, or OWA for Devices||Outlook add-ins and EWS in Exchange|
|A mailbox client that is not based on the .NET Framework or Java||Explore the EWS Managed API, EWS, and web services in Exchange|
|A mailbox client that uses the .NET Framework to access EWS||Get started with EWS Managed API client applications|
|A mailbox client that uses Java to access EWS||EWS Java API on GitHub|
|An application that customizes the Outlook user interface or relies on Outlook business logic||Outlook VBA reference|
|An application that targets Exchange Online or Exchange 2013 that you need to migrate from a previous version of Exchange||Migrating to Exchange technologies|
|A custom management tool that uses Windows PowerShell from managed code||Exchange Management Shell|
|A solution to back up or restore Exchange data||Backup and restore for Exchange|
|An extension to support accessing messages in the transport pipeline||Transport agents in Exchange|
|A mailbox client for a mobile device||Exchange ActiveSync|
Exchange interactions with custom applications
Some of these technologies enable your applications to work with data that is stored in Exchange, and others are used to manage and control the Exchange server. In many cases, you can use more than one programming technology or language to accomplish a task, which makes it possible for you to use the technologies and languages that you are familiar with. For example, you can set properties on items in the Exchange store by using the Mail REST API, EWS, or the EWS Managed API.
Exchange interacts with custom applications in a variety of ways, depending on the application architecture and functionality. At its core, Exchange not only transports messages, but also maintains mailboxes, executes form-based applications, and more.
|Message transport||Exchange serves as a standard mail server for applications that send messages.
Exchange includes several APIs that transfer messages, including REST, EWS, and the EWS Managed API.
In addition, applications can use transport agents to respond as messages are processed and delivered by Exchange.
|Mailbox storage||Exchange provides a hierarchical structure of folders, items, and properties for applications that access data stored in mailboxes.
You can access that stored information by using a combination of database and component object styles.
You can perform queries on the data, and Exchange manages access to the stored data based on user and store permissions.
Applications that handle mailbox data typically use REST, EWS, or the EWS Managed API.
|Managed enterprise server||Exchange functions as a managed server for applications that manage Exchange servers and stores.
Applications can configure, control, and monitor current activity and the health of Exchange servers across the organization.
Exchange management applications use the Exchange Management Shell to manage Exchange servers.