How It Works
MailLighter is built on Office.js, Microsoft’s official API for Outlook add-ins. This page explains the technical architecture and how your emails are processed.
Architecture Overview
┌─────────────────────────────────────────┐
│ Outlook Desktop │
│ ┌───────────────────────────────────┐ │
│ │ MailLighter Add-in │ │
│ │ ┌─────────┐ ┌───────────────┐ │ │
│ │ │ Commands │ │ Office.js │ │ │
│ │ │ (JS/ES6) │ │ API │ │ │
│ │ └────┬─────┘ └───────┬───────┘ │ │
│ │ │ Read/Write │ │ │
│ │ └────────┬────────┘ │ │
│ └────────────────┼──────────────────┘ │
│ ▼ │
│ Email Content │
│ (stays in Outlook) │
└─────────────────────────────────────────┘
No external server
Processing Flow
When you run a MailLighter command:
- Outlook triggers the command via its ribbon dropdown menu
- Office.js reads the email body using the
ReadWriteItempermission - MailLighter processes the HTML entirely in JavaScript on your device
- The cleaned content is written back to the email draft via Office.js
The entire operation happens locally within Outlook. No data is sent to any external server at any point.
Technology Stack
| Component | Technology |
|---|---|
| Runtime | Office.js (via Outlook) |
| Language | JavaScript (ES6+) |
| Transpiler | Babel |
| Bundler | webpack 5 |
| UI | HTML / CSS (minimal) |
| Localization | Custom i18n module (EN, FR, ES) |
Permission Model
MailLighter requests a single permission: ReadWriteItem.
This is the minimum permission required to:
- Read the email body (to process it)
- Write the cleaned email body back
MailLighter does not request:
ReadWriteMailbox(full mailbox access)ReadItemwithout write (would prevent cleaning)- Any network-related permission
Localization
MailLighter is available in 3 languages:
- English (default)
- French
- Spanish
The language is automatically detected from your Outlook settings. All command labels, descriptions, and tooltips are translated.
Open Source
The full source code is available on GitHub under the MIT license. You can audit the code, contribute, or fork it.