When should I choose to create a mail app versus an add-in for Outlook?
Some of you may or may not be aware that alongside with the legacy COM-based Office client object models, Office 2013 supports a new apps for Office developer platform. This blog post is intended to help new and existing Office developers understand the main differences between the COM-based object models and the apps for Office platform. In particular, this post focuses on Outlook, suggests why you should consider developing solutions as mail apps, and identifies those exceptional scenarios where add-ins may still be the more appropriate choice.
Contents:
An introduction to the apps for Office platform
Architectural differences between add-in model and apps for Office platform
Main features available to mail apps
Major objects for mail apps
Reasons to create mail apps instead of add-ins for Outlook
Reasons to choose add-ins
Conclusion
Further references
An introduction to the apps for Office platform
The apps for Office platform includes a JavaScript API for Office and a schema for apps for Office manifests. You can use this platform to extend web services and content into the context of rich and web clients of Office. An app for Office is a webpage that is developed using common web technologies, hosted inside an Office client application (such as Outlook) on-premises or in the cloud. Of the three types of apps for Office, the type that Outlook supports is called mail apps. While you use the legacy APIs—the object model, PIA, and MAPI—to automate Outlook at an application level, you can use the JavaScript API for Office in a mail app to interact at an item level with the content and properties of an email message, meeting request, or appointment. You can publish mail apps in the Office Store or in an internal Exchange catalog. End users and administrators can install mail apps for an Exchange 2013 mailbox, and use mail apps in the Outlook rich client as well as Outlook Web App. As a developer, you can choose to make your mail app available for end users on only the desktop, or also on the tablet or smart phone. You can find more information about the apps for Office platform by starting here: Overview of apps for Office.
Architectural differences between add-in model and apps for Office platform
Add-in model
The Office add-in model offers individual object models for most of the Office rich clients. Each object model is intended to automate the corresponding Office client, and allows an add-in to integrate closely with the behavior of that client. The same add-in can integrate with one or multiple Office applications, such as Outlook, Word, and Excel, by calling into each of the Outlook, Word, and Excel object models. Figure 1 describes a few examples of 1:1 relationships between an Office rich client and its object model.
Figure 1. The legacy Office development architecture is composed of individual client object models.
Apps for Office platform
The apps for Office platform includes an apps for Office schema. Using this schema, each app specifies a manifest that describes the permissions it requests, its requirements for its host applications (for example, a mail app requires the host to support the mailbox capability), its support for the default and any extra locales, display details for one or more form factors, and activation rules for a mail app to be available in the app bar.
In addition to the schema, the apps for Office platform includes the JavaScript API for Office. This API spans across all supporting Office clients and allows apps to move toward a single code base. Rather than automating or extending a particular Office client at the application level, the apps for Office platform allows apps to connect to services and extend them into the context of a document, message, or appointment item in a rich or web client. Figure 2 shows Office applications with their rich and web clients sharing a common app platform.
Figure 2. The apps for Office development architecture is composed of a common platform and individual object models.
One main difference of note is that the object models were designed to integrate tightly with the corresponding Office client applications. However, this tight integration has a side effect of requiring an add-in to run in the same process as the rich client. The reliability and performance of an add-in often affects the perceived performance of the rich client. Unlike client add-ins, an app for Office doesn’t integrate as tightly with the host application, does not share the same process as the rich client, and instead runs in its own isolated runtime environment. This environment offers a privacy and permission model that allows users and IT administrators to monitor their ecosystem of apps and enjoy enhanced security.
Main features available to mail apps
Contextual activation: Mail app activation is contextual, based on the app’s activation rules and current circumstances, including the item that is currently displayed in the Reading Pane or inspector. A mail app is activated and becomes available to end users when such circumstances satisfy the activation rules in the app manifest.
Matching known entities or regular expression: A mail app can specify certain entities (such as a phone number or address) or regular expressions in its activation rules. If a match for entities or regular expressions occurs in the item’s subject or body, the mail app can access the match for further processing.
Roaming settings: A mail app can save data that is specific to Outlook and the user’s Exchange mailbox for access in a subsequent Outlook session.
Accessing item properties: A mail app can access built-in properties of the current item, such as the sender, recipients, and subject of a message, or the location, start, end, organizer, and attendees of a meeting request.
Creating item-level custom properties: A mail app can save item-specific data in the user’s Exchange mailbox for access in a subsequent Outlook session.
Accessing user profile: A mail app can access the display name, email address, and time zone in the user’s profile.
Authentication by identity tokens: A mail app can authenticate a user by using a token that identifies the user’s email account on an Exchange Server.
Using Exchange Web Services: A mail app can perform more complex operations or get further data about an item through Exchange Web Services.
Permissions model and governance: Mail apps support a three-tier permissions model. This model provides the basis for privacy and security for end users of mail apps.
Major objects for mail apps
For mail apps, you can look at the JavaScript API for Office object model in three layers:
- In the first layer, there are a few objects shared by all three types of apps for Office: Office, Context, and AsyncResult.
- The second layer in the API that is applicable and specific to mail apps includes the Mailbox, Item, and UserProfile objects, which support accessing information about the user and the item currently selected in the user’s mailbox.
- The third layer describes the data-level support for mail apps:
- There are CustomProperties and RoamingSettings that support persisting properties set up by the mail app for the selected item and for the user’s mailbox, respectively.
- There are the supported item objects, Appointment and Message, that inherit from Item, and the MeetingRequest object that inherits from Message. These objects represent the types of Outlook items that support mail apps: calendar items of appointments and meetings, and message items such as email messages, meeting requests, responses, and cancellations.
- Then there are the item-level properties (such as Appointment.subject) as well as objects and properties that support certain known Entities objects (for example Contact, MeetingSuggestion, PhoneNumber, and TaskSuggestion).
Figure 3 shows the major objects: Mailbox, Item, UserProfile, Appointment, Message, Entities, and their members.
Figure 3. Major objects and their members used by mail apps in the JavaScript API for Office.
Figure 4 shows all of the objects and enumerations in the JavaScript API for Office that pertain to mail apps.
Figure 4. All objects for mail apps in the JavaScript API for Office.
Figure 5 is a thumbnail of a diagram with all the objects and members that mail apps use. Zoom into the diagram at https://go.microsoft.com/fwlink/?LinkId=317271.
Figure 5. All objects and members used by mail apps in the JavaScript API for Office.
Reasons to create mail apps instead of add-ins for Outlook
The following are common reasons why mail apps are a better choice for developers than add-ins:
- You can use existing knowledge of and the benefits of web technologies such as HTML, JavaScript, and CSS. For power users and new developers, XML, HTML, and JavaScript require less significant ramp-up time than COM-based APIs such as the Outlook object model.
- You can use a simple web deployment model to update your mail app (including the web services that the app uses) on your web server without any complex installation on the Outlook client. In fact, any updates to the mail app, with the exception of the app manifest, do not require any updating on the Office client. You can update the code or user interface of the mail app conveniently just on the web server. This presents a significant advantage over the administrative overhead involved in updating add-ins.
- You can use a common web development platform for mail apps that can roam across the Outlook rich client and Outlook Web App on the desktop, tablet, and smartphone. On the other hand, add-ins use the object model for the Outlook rich client and, hence, can run on only that rich client on a desktop form factor.
- You can enjoy rapid turnaround of building and releasing apps via the Office Store.
- Because of the three-tier permissions model, users and administrators can appreciate better security and privacy in mail apps than add-ins, which have full access to the content of each account in the user’s profile. This, in turn, encourages user consumption of apps.
- Depending on your scenarios, there are features unique to mail apps that you can take advantage of and that are not supported by add-ins:
- You can specify a mail app to activate only for certain contexts (for example, Outlook displays the app in the app bar only if the message class of the user-selected appointment is IPM.Appointment.Contoso, or if the body of an email contains a package tracking number or a customer identifier).
- You can activate a mail app if the selected message contains some known entities, such as an address, contact, email address, meeting suggestion, or task suggestion.
- You can take advantage of authentication by identity tokens and of Exchange Web Services.
Reasons to choose add-ins
The following features are unique to add-ins and may make them a more appropriate choice than mail apps in some circumstances:
- You can use add-ins to extend or automate Outlook at an application-level, because the object model and PIA have extensive integration with Outlook features (such as all Outlook item types, user interface, sessions, and rules). At the item-level, add-ins can interact with an item in read or compose mode. With mail apps, you cannot automate Outlook at the application level, and you can extend Outlook’s functionality in the context of only the read-mode of the supported items (messages and appointments) in the user’s mailbox.
- You can specify custom business logic for a new item type.
- You can modify and add custom commands in the ribbon and Backstage view.
- You can display a custom form page or form region.
- You can detect events such as sending an item or modifying properties of an item.
- You can use add-ins on Outlook 2013 and Exchange Server 2013, as well as earlier versions of Outlook and Exchange. On the other hand, mail apps work with Outlook and Exchange starting in Outlook 2013 and Exchange Server 2013, but not earlier versions.
Conclusion
When you are considering creating a solution for Outlook, first verify whether the supported major features and objects of the apps for Office platform meet your needs. Develop your solution as a mail app, if possible, to take advantage of the platform’s support across Outlook clients over the desktop, tablet, and smartphone form factors. Note that there are still some circumstances where add-ins are more appropriate, and you should prioritize the goals of your solution before making a decision.
Further references
Apps for Office and mail apps
Schema reference for apps for Office manifests
Legacy Outlook object model and APIs
Welcome to the Outlook 2013 developer reference
What's new for Outlook 2013 developers
Welcome to the Outlook 2010 Primary Interop Assembly Reference
mod_off15_OfficeJSAPIs_MailApps_All_updated.pdf
Comments
- Anonymous
December 11, 2012
Great article, thank you. It really helped to clarify when it is appropriate to create a Mail app. I hope that in the future Microsoft chooses to expand upon the things that can be done in a Mail app to allow for greater flexibility. - Mike