PROJECT / 13 FEATURE ARTICLE
Bulk EmailSender
A browser-to-automation workflow for preparing personalized email tasks.
01 Project overview
Prepare once, deliver through a separate run
Bulk Email Sender turns a recipient CSV and reusable HTML template into a task for personalized SMTP email. The browser interface helps prepare and preview that task; it does not send messages.
The embedded V5 demo covers this preparation stage and stops at task JSON. Actual delivery runs separately, either locally with Node.js or through GitHub Actions; both paths use the same task format and SMTP configuration, then produce a results report.
02 System flow
Preparation ends at the task file
The real repository workflow continues from task JSON to local Node.js or GitHub Actions delivery through SMTP. The embedded V5 demo ends at task preparation and never sends email.
03 Implementation
One task model, two execution paths
The repository browser UI uses Papa Parse to read recipient CSV, requires an email column, previews up to five rows, and substitutes double-curly variables such as {{name}} in the subject and HTML body. The dependency-free embedded V5 demo covers task preparation with a small local CSV parser and renders CSV and template values as text; it stops at task JSON and does not execute HTML-like input.
The local Node.js command reads a task JSON path and sends personalized messages sequentially with Nodemailer over SMTP. The GitHub Actions workflow processes task files added under tasks/ and contains its own inline sender logic. Both paths use SMTP settings from environment configuration or GitHub Secrets and write a results JSON file with success and failure counts.
04 Use the workflow
From recipient list to delivery report
- 01
Compose
Enter a subject and HTML template, then add double-curly variables for recipient-specific fields.
- 02
Prepare recipients
Upload a CSV with an email column. Other columns can supply values for the template.
- 03
Preview and prepare
The embedded demo previews up to five recipients, substitutes template variables, and generates task JSON.
- 04
Choose execution
In the real repository workflow, run the task locally with Node.js or add its JSON under tasks/ for GitHub Actions.
- 05
Review results
After external execution, inspect the results JSON for recipient totals, successes, failures, and recorded errors.
05 Interactive demo