March 17th, 2020

Accessing Outlook items in a user’s archived, shared or delegated mailboxes using Microsoft Graph

We have noticed that a few customers are unsure about the right way to access Outlook messages and contacts in mailboxes other than the signed-in user’s primary mailbox (archive, delegated, or shared mailboxes). For example, some customers use one of the following API URLs to access Outlook items in another mailbox, using the item ID and the /me URL path.

https://graph.microsoft.com/v1.0/me/messages/{message_id} https://graph.microsoft.com/v1.0/me/contacts/{contact_id}

Note that the item ID corresponds to an item that resides in a mailbox (archive, shared, or delegated) that is different from the signed-in user’s primary mailbox. This is an incorrect way to access items across mailboxes, even if the API call succeeded in certain cases. Such cross-mailbox API calls were never supported, and are less performant and more error-prone.

To ensure consistent API behavior with lower failure rates, starting April 15, 2020, such cross-mailbox API calls will fail. Please note that the above API calls will continue to work with Outlook items that belong to the signed-in user’s primary mailbox.

If you’re an app developer who used the above APIs to access Outlook items in an archive mailbox, or items belonging to another user in a delegated or shared mailbox, we recommend that you immediately update your application to use one of the following APIs to ensure continuity of service:

https://graph.microsoft.com/v1.0/users/{user_id}/messages/{message_id} https://graph.microsoft.com/v1.0/users/{user_id}/contacts/{contact_id}

In the preceding query URLs, {user_id} is the SMTP address of the delegated or shared mailbox.

Happy coding!