Skip to content


Repository files navigation


OpenSSF Scorecard
OpenSSF Best Practices

Message Header Analyzer mail app.

This is the source for the Message Header Analyzer. Install the app from the store here:

Installation Procedure

Because MHA requires the ReadWriteMailbox permission it can only be installed by the Administrator through the Exchange admin center or by a user as a custom addon. Here are some steps I put together:

  1. In Office365, go to the Exchange Admin Center.
  2. Click on the Organization tab
  3. From there, select the add-ins tab
  4. Click the Plus icon/Add from the Office Store
  5. Click the Plus icon/Add from the Office Store
  6. A new page will load for the store
  7. Search for "Message Header Analyzer"
  8. Choose MHA in the results
  9. Click Add
  10. Confirm by clicking Yes
  11. Back in the Exchange Admin Center, refresh the list of add-ins
  12. You can now edit who the add-in is available for

A Note on Permissions

In order to get the transport message headers I have to use the EWS makeEwsRequestAsync method, which requires the ReadWriteMailbox permission level. See the article Understanding Outlook add-in permissions for more on this. If I could request fewer permissions I would, since I only ever read the one property, but I have no choice in the matter.

When REST is more widely available, and a few REST specific bugs are fixed, I'll be able to switch to REST and request a lower permission level.


Here is a standalone Message Header Analyzer running the same backend code as the MHA app:

Unit Tests


For both IOS and Android click open an email, then press the three dots under the date. There you should see the MHA icon. See outlook-mobile-addins page for more details.

Development & Custom Deployment

Install and prereqs

  1. Ensure node.js (LTS) is installed
  2. Clone the repo to your local drive
  3. Run the following to install packages: npm install

Manual build

  • The commands below for unit/site/add-in testing will also build before starting the server, but you can also build on demand.
  • Manual build: npm run build
  • For continuous build on changes, you can use watch: npm run watch

Unit Testing

  • Start the dev server: npm run dev-server
  • Run unit tests from command line: npm run test
  • Run unit tests locally in browser: https://localhost:44336/Pages/unittests.html
  • Changes made to source should live compile and reload page. Ctrl+R/refresh as needed.

Live site testing

Add-in testing (Command line)

  • Close Outlook
  • Start the dev server: npm start
  • Outlook should start with add-in added as "View Headers Debug Local"
  • Changes made to source should live compile and reload in Outlook. Ctrl+R/refresh as needed.

Add-in testing (VSCode)

  • Follow the steps given here.


  • Clean build artifacts: npm clean