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 App nameGenerate
  5. Copy the 16-character password → paste in the app

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

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-1.0.1.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

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

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for sahajmails-1.0.1.tar.gz
Algorithm Hash digest
SHA256 76fea8741c882f4890e11a6106a2ddddfb7c3f162d6db79100b2c8ef928fbf1c
MD5 f86deecfb3d361d07ee541c86582b2b4
BLAKE2b-256 f72bd4136b2cd0b94072334898e4f16f2e23f449c1aa3d8c161d697448870bfe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sahajmails-1.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-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c3729e622ca1ad8900ff251b1d70d72df17f7d92bfc8a89e3aad29bb5527e363
MD5 66167241a1190518cd38f2276d5a3945
BLAKE2b-256 7366ceb90508578151da4105d6a6b039ce4235eb713b63851e7d5419801ba8b2

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