ResuMailer is a Chrome Extension that eases the process of sending job application emails using Gmail SMTP. It reads recipient data from an Excel sheet, personalizes messages, attaches your resume, and sends emails—all from a user-friendly interface.
- ✅ Easy Resume Automation via your Gmail App Password
- ✅ No Cloud Storage — credentials remain on your system only (AES encrypted with CryptoJS)
- ✅ Excel Integration with SheetJS (xlsx) for bulk message & contact parsing
- ✅ Supports PDF, DOC, DOCX resumes with proper MIME handling (base64 encoded)
- ✅ CORS-enabled Express backend hosted on Render
- ✅ Works in Background — email sending continues even after closing the extension popup
- ✅ Excel-based messaging only, with a fallback default message feature (coming soon in final release)
- ✅ UI built with Bootstrap 5 for lightweight and clean user experience
| Layer | Tech Used |
|---|---|
| Frontend | HTML, CSS, Bootstrap, JS |
| Backend | Node.js, Express.js |
| Excel Parsing | xlsx (SheetJS) |
| Email Sender | Nodemailer + Gmail SMTP |
| File Security | AES Encryption via CryptoJS |
| Hosting | Render (Express Server) |
| File Storage | IndexedDB (no external servers) |
Your Gmail credentials are never uploaded or sent to any server. Everything is processed locally, and app passwords are securely encrypted and stored using AES (CryptoJS).
⚠️ Make sure to generate a Gmail App Password for SMTP usage. Regular Gmail passwords will not work.
- Upload your resume file (PDF/DOC/DOCX)
- Select an Excel file with
Email,Company, andMessagecolumns only - Authorize file access for reading (only once)
- Enter your Gmail app email & password
- Hit Send — Emails will be queued & sent, even after closing the popup.
Ensure your .xlsx file has exactly the following column headers (case-sensitive):
| Company | Message | |
|---|---|---|
| example@gmail.com | I'd love to join Google as... |
❗ Any additional or incorrect fields will result in a parsing error.
- 🎥 Video Demo : [https://www.youtube.com/watch?v=tMMWDZ35ePo] (Demo)
- 📑 Full documentation : https://docs.google.com/document/d/1PNhin-4SysJP7j89F0nAq8HZDFh8ebaXt4LHN6ee8rI/edit?tab=t.0
- 🧠 Tutorial series on how the internals work
This extension uses:
storage— to save form data locallyscripting— to handle background taskshost_permissions— needed only for file access, not browsingremote code— required for backend communication only (Render API)
Each permission is used strictly within the extension and never for tracking.
The beta version is nearly ready!
Follow me on LinkedIn to stay updated as I release:
- Feature breakdowns
- Dev logs
- Behind-the-scenes posts