BulkMailer Pro

Gmail SMTP Campaign Platform

Sign in to continue

Your Google credentials are never stored on any server. Authentication is handled entirely by Google's secure OAuth flow.

Dashboard
Gmail Accounts
0
JSON loaded
Recipients
0
Ready to send
Invoice Templates
0
HTML files
Emails Sent
0
0 failed

Quick Start

Activity Log

No activity yet

Backend Required for Real Sending

Gmail SMTP requires the Python backend running locally. Click Backend Setup → download backend.py → run it → connect. Without the backend, the app runs in Simulation Mode.

Gmail Accounts

Upload up to 10 Gmail JSON files — sent sequentially: 200 emails per account via Gmail SMTP

Loaded Accounts
0
Total Capacity
0
Total Sent
0
Slots Available
10

Bulk Import

0 / 10

Drop Gmail JSON files here

Service Account or OAuth2 Client JSON
Select up to 10 files — Gmail SMTP sequential blast

Service Account

Cloud Console → Service Accounts → Keys

OAuth2 Client

Cloud Console → OAuth 2.0 Client IDs

Account Slots

10 slots
Rotation Setting

After 200 sends, the campaign auto-rotates to the next account.

Security Guarantee

Passwords never stored. Tokens held in localStorage only. Access tokens auto-renewed via refresh token every ~1 hour.

Sequential Sending Flow

Auto-rotation
Total Emails
0
Load accounts to see sequential flow
Authorized
Needs Auth
Error
Arrows show email rotation order

No Gmail accounts connected

Upload Service Account or OAuth2 JSON credential files to get started

Service Account JSON
  1. 1Go to Google Cloud Console
  2. 2IAM & Admin → Service Accounts → Create
  3. 3Enable Gmail API + domain-wide delegation
  4. 4Keys → Add Key → JSON → Download
  5. 5Upload here — max 10 files
OAuth2 Client Credentials
  1. 1Go to Google Cloud Console
  2. 2Credentials → OAuth 2.0 Client ID → Desktop App
  3. 3Click Download JSON
  4. 4Upload here → click Authorize on the card
  5. 5Run backend.py to complete token exchange

Send Campaign

Configure and launch your email blast — all settings in one place

Sender Accounts

No Gmail accounts loaded —

Recipients

0 recipients loaded

Maximum 2,000 per campaign

Subject Lines

0 subjects — 1 selected randomly per email

Send Rate

Delays help respect Gmail rate limits. Do not set too low.

Message Body

Attachment

Supports: %RandomInvoiceNumber%, %CustomerEmail%

Variable Overrides

Ready to Send

Send Logs

Per-message send records — status updated from provider response only

Total
0
Sent ✓
0
Failed ✗
0
Queued
0
#RecipientSender AccountSubjectTimeStatusResponse
No messages yet

Recipients

Import via CSV or TXT — JSON files are NOT used for recipients

Note: JSON files are used only for Gmail accounts. Import recipients via CSV or TXT files, or paste manually below.

Import CSV

Drop CSV or click

Columns: Email, FirstName, LastName, CompanyName, CompanyPhone, Address, CustomField1, CustomField2

Import TXT

One email per line

One valid email address per line

Manual Entry

0 recipients 0 invalid 0 dups
EmailFirst NameLast NameCompanyPhoneStatus
No recipients loaded

Subject Lines

Up to 1,000 subjects — one selected randomly per email

0 subjects/ 1,000 max
#Subject LineActions
No subjects added

Email Templates

Plain text and HTML templates with dynamic variable support

Click to copy variable placeholder:

No templates yet

HTML Invoice Templates

Bulk upload — sent sequentially (Invoice 1 → Recipient 1, Invoice 2 → Recipient 2...)

Drop HTML invoice files here

Each HTML file will be assigned to recipients sequentially — variables substituted per recipient

Invoice Processing Pipeline

HTML Template Variable Substitution HTML Rendering PDF Generator (html2canvas + jsPDF) PDF Attachment Gmail SMTP/API

Invoice Number Generator — %RandomInvoiceNumber%

Example outputs: INV-2541D-CD142-AZIZ-142  ·  ORD-14566-52GHGJ-JG4452-GHRT12  ·  RF144-HDGJK-271GJ-SHNGF514

Random Total Generator — %RandomTotal%

Amounts generated: $300.00, $349.00, $400.00, $785.00, $1,249.00 (example)

No invoice templates loaded

Company Phone Numbers

Manage phone numbers for %CompanyPhone% — imported randomly per email

Bulk import: TXT or CSV file with one phone per line (optionally: phone,label)

#Phone NumberLabel
No phone numbers added

Backend Setup

Python Flask backend for real Gmail SMTP/API sending

Python Flask
Handles Gmail SMTP auth + sending
Gmail API
Real OAuth 2.0 + SMTP delivery
PDF Engine
WeasyPrint or pdfkit HTML→PDF

Step 1Install Dependencies

pip install flask flask-cors google-auth google-auth-oauthlib google-api-python-client pip install weasyprint requests python-dotenv

Step 2Download & Run Backend

Click "Download backend.py" to get the full source...

Step 3Start & Connect

python backend.py # Runs at: http://localhost:8000
# Connection status will appear here

Settings

Rate Limiting

The application respects Gmail sending limits. Free Gmail: ~500/day. Google Workspace: ~2,000/day. Do not attempt to bypass these limits.

Compliance

Security

Gmail passwords never stored
OAuth tokens stored encrypted
No credentials in logs
TLS/HTTPS required in production