ZipMail is an Outlook add-in that automatically:
- Compresses the message body and attachments into a single
msg.zip - Optionally encrypts the ZIP with a password (AES)
- Automatically decompresses received messages so users see the original mail
git clone https://github.com/<your_username>/ZipMail.git
cd ZipMail
npm run setup
This command:
- installs npm dependencies
- installs the local HTTPS development certificates
- creates a dist/ folder if missing
- prints the next steps to start the dev server
- If you’re on macOS, it also shows how to trust the local certificate manually.
npm run dev-server
The add-in will be served at https://localhost:3000/
Once the dev server is running:
npm start
Then open Outlook → Preferences → Add-ins → Load add-in manually and select manifest.xml.
To stop debugging:
npm stop
Command Description:
npm run setupOne-time setup (install deps, certs, dist)npm run dev-serverLaunches Webpack dev server on https://localhost:3000npm run buildProduction build (dist/)npm startStarts Outlook with the add-in loadednpm stopStops the add-in debug sessionnpm run lintRuns ESLint checksnpm run lint:fixAuto-fixes lint issues
- Node.js ≥ 18 (Apple Silicon compatible)
- Outlook 2024 LTS for Mac or Windows (modern experience)
- Office.js, JSZip, Webpack 5, Babel, ESLint 9, Prettier
├── assets/ # Static assets and icons
├── src/
│ ├── commands/ # Outlook command scripts (buttons, menus)
│ └── taskpane/ # Task pane HTML and JS
├── dist/ # Generated build output (not versioned)
├── manifest.xml # Add-in manifest for Outlook
├── package.json # NPM scripts and dependencies
├── webpack.config.js # Webpack configuration (ESM)
└── eslint.config.js # ESLint + Prettier configuration
node_modules/
dist/
build/
*.pem
*.crt
*.key
.DS_Store
npm-debug.log*
.env
coverage/
.vscode/*
!.vscode/settings.json
!.vscode/extensions.json
This project is distributed under the MIT License.
© 2025 — Olivier LAHAYE.
© 2025 — ZipMail contributors.
➡️ The file assets/ZipMailMessage.html contains the HTML template inserted into the email body when sending a zipped message.
➡️ During development, manifest.xml should point to https://localhost:3000/... URLs.
➡️ Keep package-lock.json under version control for reproducible builds.
➡️ On macOS, if Outlook cannot connect to https://localhost:3000/, trust the certificate manually once:
sudo security add-trusted-cert -d -r trustRoot \
-k /Library/Keychains/System.keychain \
~/.office-addin-dev-certs/localhost.crt
Contributions are welcome 🎉
Run npm run lint:fix before committing.
Ensure the add-in still works with npm run dev-server.
Keep commits small and clear.
Happy coding with ZipMail 🚀