A powerful desktop application for sending personalized bulk emails with customized PDF certificates/attachments. Built with a modern GUI using CustomTkinter.
- Tabbed Interface: Clean organization (Dashboard, History, Settings)
- Real-time Progress: Live logging and progress bar
- Dark Mode: Eye-friendly modern design
- History Tracking: View all processed emails with refresh/clear options
- Local Files: CSV, Excel (.xlsx), JSON
- Google Sheets: Paste a shareable link and go
- Google Docs: Use template documents from Google Drive
- Word Templates: Use
.docxfiles with{{PlaceholderName}}syntax - Auto-Replace: Any column in your data (e.g.,
{{Name}},{{Email}},{{Course}}) - Professional Output: Generated PDFs saved automatically
- Duplicate Prevention: Tracks processed emails to avoid re-sending
- Continuous Monitoring: Auto-check Google Sheets for new entries periodically
- Rate Limiting: Built-in throttling to stay within Gmail limits
- Gmail App Passwords: Secure SMTP authentication
- Retry Logic: Automatic retries with exponential backoff
- Input Validation: Email format checking before sending
- Go to the Releases page
- Download the latest
AutoMailer.exe - Double-click to run - No Python installation required!
Note: Windows Defender may show a warning for unsigned executables. Click "More info" β "Run anyway".
# Clone the repository
git clone https://github.com/Rahul-14507/email_automator.git
cd email_automator
# Create virtual environment
python -m venv venv
venv\Scripts\activate # On Windows
# source venv/bin/activate # On macOS/Linux
# Install dependencies
pip install -r requirements.txt
# Run the GUI
python gui_main.py- Enable 2-Factor Authentication in your Google Account
- Generate an App Password:
- Go to Google Account Security
- Navigate to 2-Step Verification β App passwords
- Generate a password for "Mail" on "Windows Computer"
- Copy this 16-character password
Recipient List (CSV, Excel, or Google Sheets):
Name,Email,Company
John Doe,john@example.com,Acme Corp
Jane Smith,jane@example.com,Tech IncWord Template (certificate_template.docx):
Congratulations {{Name}}!
This certifies that you have completed the course.
Email: {{Email}}
Company: {{Company}}
- Open
AutoMailer.exe - Dashboard Tab:
- Recipient List: Browse to your file OR paste Google Sheet URL
- Template: Browse to
.docxOR paste Google Doc URL - SMTP Username: Your Gmail address
- SMTP App Password: Paste the 16-character password
- Click Start Sending β
- Watch the Activity Log for real-time updates
- View the History Tab to see all processed emails
- Check the Settings Tab for monitoring options
All generated files are saved next to the .exe file:
| Item | Location |
|---|---|
| Generated PDFs | ./output/pdfs/ |
| Downloaded Sheets | ./downloads/ |
| Downloaded Templates | ./downloads/ |
| Processed Emails | ./processed_emails.json |
- Go to Settings Tab
- Toggle Enable Smart Monitoring
- Set Interval (mins) (e.g., 30)
- The app will auto-check your Google Sheet for new entries
- Go to History Tab
- View all previously sent emails
- Refresh: Reload the list
- Clear All: Reset the history (emails will be sent again on next run)
- Settings Tab β Keep Generated PDFs: ON
- PDFs will remain in
./output/pdfs/after sending
The config/config.yaml file controls:
- SMTP server settings
- Email subject template
- Retry logic
- Rate limiting
- PDF output
Example:
smtp:
server: smtp.gmail.com
port: 587
email:
subject: "Your Certificate - {{name}}"
throttling:
delay_seconds: 2
max_per_minute: 25- β Ensure you're using an App Password, not your regular Gmail password
- β Check 2FA is enabled on your Google Account
- β
Make sure the Word template has
.docxextension - β For Google Docs, ensure the link has "Anyone with the link can view"
- β Share the sheet with "Anyone with the link can view"
- β
URL should look like:
https://docs.google.com/spreadsheets/d/...
- β Microsoft Word must be installed (docx2pdf uses Word COM automation)
- β Check that placeholders match column names (case-insensitive)
- Personal Accounts (@gmail.com): ~500 emails / 24 hours
- Workspace Accounts: ~2,000 emails / 24 hours
- Trial Accounts: May have lower limits
Note: These limits are enforced by Google, not by the AutoMailer app. If you exceed the limit, Google will temporarily block sending for up to 24 hours.
- Python 3.10+
- Microsoft Word (for PDF generation)
- Gmail account with App Password
See requirements.txt for Python packages.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with CustomTkinter
- PDF generation via docx2pdf
- Email templating with Jinja2
If you encounter issues:
- Check the Troubleshooting section
- Review the Activity Log in the app
- Open an Issue
Made with β€οΈ for efficient email automation