Skip to main content

Simple, secure bulk email sender using Gmail + Streamlit

Project description

SahajMails

Send personalized bulk emails — Free, Secure, Simple

No servers. No coding. Just upload, type, send.

PyPI version Python 3.8+ License: MIT


Features

  • 100% Local: Your data never leaves your device
  • Gmail App Password: Secure authentication (no real password used)
  • CSV/Excel Upload: Supports .csv, .xlsx, .xls
  • Smart Placeholders: {{ firstName }} — case and space tolerant
  • Live Preview: Real-time HTML rendering
  • Test Email: Send to yourself before bulk
  • Attachments: PDFs, images, documents
  • Progress Tracking: Real-time log and progress bar
  • Markdown & HTML: Full email formatting support
  • Gmail-Safe: 2-second delay between sends

Quick Start

pip install sahajmails
sahajmails

Open http://localhost:8501


7-Step Guide

  1. Upload your contact list (must have email column)
  2. Enter your Gmail and App Password
  3. Compose email using {{ columnName }} placeholders
  4. Click placeholder buttons to copy instantly
  5. Attach files (optional)
  6. PreviewSend Test Email
  7. Start Bulk Send → Watch progress

Example CSV:

email,firstName,company
alice@example.com,Alice,Acme Corp
bob@work.com,Bob,StartupXYZ

Gmail App Password (Required)

  1. Go to myaccount.google.com/security
  2. Enable 2-Step Verification
  3. Search "App Passwords"
  4. Select MailWindows ComputerGenerate
  5. Copy the 16-character password → paste in the app

Never use your real Gmail password.


Installation

pip install sahajmails

Or from source:

git clone https://github.com/sahajrajmalla/sahajmails.git
cd sahajmails
pip install -e .

Development

# Install dev dependencies
pip install -e .[dev]

# Run tests
pytest tests/

# Build package
python -m build

Contributing

Contributions are welcome!

  1. Fork the repo
  2. Create a branch: git checkout -b feature/your-idea
  3. Commit changes: git commit -m "feat: add X"
  4. Push and open a Pull Request

Please follow PEP 8 and include tests.


Security & Privacy

  • Runs entirely on your machine
  • No data is stored or transmitted
  • Open source under MIT License
  • Uses Gmail App Passwords only

License

MIT License – Free for personal and commercial use.


Made with ❤️ by Sahaj Raj Malla
Kathmandu, Nepal

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sahajmails-0.0.1.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sahajmails-0.0.1-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file sahajmails-0.0.1.tar.gz.

File metadata

  • Download URL: sahajmails-0.0.1.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for sahajmails-0.0.1.tar.gz
Algorithm Hash digest
SHA256 a4b60496868cbc3276c9c55089140e8626a6df5ef69f7a1a8d4e06151def0948
MD5 b15831b7705e933f184211cb2ed207b7
BLAKE2b-256 8a8aa1ddd71d970984672b2a833ba5b923ff691518a3e0bac7c1c1b11ce3535a

See more details on using hashes here.

File details

Details for the file sahajmails-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: sahajmails-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for sahajmails-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8c82bfbea88c99e0c4e5c43f6ee333250d8cfd8ed067e70e00e19f425e554571
MD5 37e1120942d999adb9c0494d09eca460
BLAKE2b-256 a445a307f3c3b58bc114c3ae5f2b881465aa0ece5bb8b5ebd65dbb3646bc8fc6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page