• Stars
    star
    123
  • Rank 290,145 (Top 6 %)
  • Language
    TypeScript
  • License
    GNU General Publi...
  • Created about 6 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Do quick, hassle-free email marketing with this small but very powerful tool! πŸ”₯

bulk-mail-cli by Kumar Abhirup

Type npm Version Tests Twitter GitHub stars


pkgreview.dev Rating pkgreview.dev Rating

Like us a lot? Help others know why you like us! Review this package on pkgreview.dev ➑ Review us on pkgreview.dev



πŸ“¦ bulk-mail-cli

Do quick, hassle-free email marketing with this small but very powerful tool! πŸ”₯

It sends automated, dynamic and beautifully designed HTML emails to your mailing list via your terminal! 😎

Ever felt a quick need to shoot a fabulous mail to your subscribers? Without any inconvenience of creating complex campaigns with MailChimp and MailGun? Just open your terminal, input the CSV and HTML file with dynamic text, and just shoot the mails with bulk-mail-cli!

Features

πŸ’ƒ Β Β  Active on Slack. Join the bulk-mail-cli Slack group for suggestions, bugs reports, support, and core development.

πŸ“¦ Β Β  Shoot mails using CSV.

πŸ“ Β Β  Mail dynamic HTML Templates using the {{fname|lname}} syntax.

⏰    Set the sending interval time in Cron Expressions! Eg. */10 * * * * *

πŸ“Œ Β Β  Unlimited attachments! Attach any files on your local computer or you may just provide a direct URL in configuration and bulk-mail-cli will download and send the attachment under dynamic filenames and pathnames.

⛅️ Β Β  Runs on cloud! Can be run on AWS EC2 servers and on any Node.js droplet on DigitalOcean.

πŸ”° Β Β  It saves your campaign progress! You can pause and resume the Mail Campaign from where you left the last time.

✨    Use .env variables to not hardcode the emails and passwords in configuration files.

πŸ‘¨β€πŸ« Β Β  Contentful demo files provided! You get many beautiful email templates to pick from!

𝔀 Β Β  WordPress and other CMS' friendly. Just export the list of your users, change the email containing column name to email and you are good to go!

πŸ§ͺ Β Β  Tested on MacOS and Linux.



πŸ’ƒ Documentation

Install bulk-mail-cli

Assuming that you have node and npm installed... Run the following in your terminal.

npm i -g bulk-mail-cli

Get help

Just run bulkmail support in your terminal to see what commands and flags you can use to do awesome things.


Generate demo Mail Templates and configuration files

To generate demo files, use the following command.

bulkmail demo

Configuration file

{
  "credentials": {
    "email": "{{EMAIL}}",
    "password": "{{PASSWORD}}", // turn on less-secure-apps to send emails: https://myaccount.google.com/lesssecureapps?pli=1
    "host": "smtp.gmail.com", // depends on what service you are using
    "port": 465, // 465 / 587
    "secureConnection": true // boolean: true | false
  },
  "mail": {
    "subject": "Heya {{fname}} {{lname}}! Just wanted to say hi!",
    "from": "Chandler Bing <[email protected]>", // keep the format
    "to": "leads.csv", // path to csv (relative to where this file is)
    "theme": "themes/Newsletter/theme.html", // path to csv (relative to where this file is)
    "attachments": [
      // relative path to the attachment files. Keep this array `empty` if no attachments.
      // SEE THE EXAMPLES BELOW.
      {
        "filename": "{{fname}}'s Demo CSV.csv", // You may use string patterns in fileName
        "path": "leads.csv" // You may use string patterns in path too!
      },
      {
        "filename": "{{fname}} {{lname}}'s Resume.pdf",
        "path": "https://raw.githubusercontent.com/KumarAbhirup/resume/master/Kumar%20Abhirup%20CV.pdf"
      }
    ]
  },
  "configuration": {
    "mailInterval": "*/10 * * * * *", // Cron Expression: To mail every 10 seconds [ >= 10 seconds recommended ]
    "verbose": true // boolean: True if you want a log of the live process in the terminal.
  }
}

Send the Mail πŸ”°πŸ”°πŸ”°

EMAIL="[email protected]" PASSWORD="secret" bulkmail -f bulkmail.json # reference the configuration file here

That will start the mailing process! After every mail it sends, it updates the configuration file with the emails that you sent the message to. So that when you run the same campaign next time, it will resume from where you paused. To start over, you can append the --restart flag to the command.


Writing data in CSV

List emails the right way

If you use WordPress, you may just import the CSV file of users by using this plugin.

  • When you use that plugin, just change the user-email column name of the CSV file to just email so that to ensure no errors.

If you are feeding data from any other source or by manual means, please for the GOD's SAKE ensure that you list emails only under the email column.

If the CSV file has emails fed in some other coulumn name (such as user-email, allEmails, etc)... bulk-mail-cli would simply throw an error to *not work at all.


Dynamic data

You may add any other column featuring custom data in the CSV. Namely fname, lname, address, etc... to use in the Subject and Body of your campaign mail. You can use the CSV fields everywhere in the configuration files.

Syntax

The syntax can be used in the email section of the CSV and can also be used everywhere in the configuration file and HTML templates. The syntax will be processed by bulk-mail-cli to generate correct mail output.

{{Hi|Hello|Howdy}} πŸ™Œ

My name is {{fname}} {{lname}}.

How'yooou dooooing? 😁

...

You can also define PASSWORD environment variable so that you don't directly type it in the configuration file.

Command

PASSWORD=ThisIsAPassword bulkmail --file bulkmail.json

Configuration

{
  "credentials": {
    ...
    "password": "{{PASSWORD}}"
    ...
  }
}



πŸ“ License

GPL Β© Kumar Abhirup
Follow me πŸ‘‹ on Twitter β†’ Twitter

More Repositories

1

dockerized

Boilerplate to start with Docker setup (Next.js included)
JavaScript
111
star
2

personal-website

GitHub monorepo that runs my personal website. Note: This stack is now almost 4 years old, I wouldn't make the tech stack choices today I used to make back then :))
JavaScript
33
star
3

stripe-connect-demo

Next.js Stripe Connect OAuth Flow.
TypeScript
23
star
4

iconic-input

Beautiful Input components for React Native... <IconicTextbox/> and much more!
JavaScript
22
star
5

resume

All versions of my resume are archived here.
7
star
6

pkgreview.dev

The ratings and reviews website for code package managers (website now deprecated)
JavaScript
7
star
7

adify

Adify - Setup ads with ultra ease
JavaScript
6
star
8

glitter

Automate your Twitter. Endlessly.
JavaScript
6
star
9

fluslive

Twitch clone, made with React and Redux
JavaScript
5
star
10

truffle-tutorial

​How to develop, deploy, and test smart contracts using Ganache.
JavaScript
5
star
11

headless-wordpress-with-react

Headless WordPress with React.js Demo (featured at #WCKochi 2019)
JavaScript
4
star
12

loon_shooter

Koji Loon Shooting p5.js game!
JavaScript
4
star
13

react-apollo-prisma-boilerplate

Boilerplate code to kickstart a pro Next.js webapp!
JavaScript
4
star
14

react-redux-examples

The repository to teach myself React and Redux.
3
star
15

keynotes

Here are all my speaker keynotes since late 2019 🎀🎀🎀
3
star
16

twitter-reply-bot

A bot that automatically replies with funny memes everytime Elon Musk tweets.
JavaScript
3
star
17

Koji-React-OAuth-Scaffold

React OAuth App template for Koji makers to start with!
CSS
3
star
18

kumarabhirup

My personal webpage to ship things! πŸš€πŸš€
JavaScript
3
star
19

wpnow

⚑️Easy WordPress boilerplate with now.sh workflow and documentation.
PHP
2
star
20

paprink-backend

This empowers Paprink Frontend.
JavaScript
2
star
21

paprink

PaprInk, where writers flourish.
CSS
2
star
22

demo-graphql

Bare minimum GraphQL server setup to start with.
JavaScript
2
star
23

koji-react-leaderboard

React Render Prop Components that fetch and save Leaderboard data to and from the Koji Backend
TypeScript
2
star
24

p5js_scaffold

Koji p5js Scaffold
JavaScript
2
star
25

koji-leaderboard-api

Koji Database based Leaderboard API setup, at your doorsteps.
TypeScript
2
star
26

dont_touch_the_ground

A fun Koji game that helps spongebob not burn his pants on ground. Built on p5.js
JavaScript
2
star
27

angry_pigs

From a long time pigs suffered, now... it's the revenge time. Bust those birds!
JavaScript
1
star
28

kumarabhirup-backend

The backend for empowering kumar.now.sh
JavaScript
1
star
29

p5js_multiplayer_koji_scaffold

Official repository of p5js multiplayer Koji Scaffold
JavaScript
1
star
30

typescript-boilerplate

TypeScript Boilerplate code setup, with ESLint and Prettier, at your doorsteps.
TypeScript
1
star
31

scratchpay-coding-challenge

UI for managing users
JavaScript
1
star
32

federal-core

Federal Core
CSS
1
star
33

drunk_aliens

A fun Koji game. πŸ‘½ Drunk Aliens πŸš€ Keep them away!! 🍺
JavaScript
1
star
34

nodejs-boilerplate

Complete NodeJs, Express server boilerplate with Sass and Linting!
JavaScript
1
star
35

webpack-treeshaking-json

Treeshake JSON files using webpack-json-access-optimizer Plugin
JavaScript
1
star
36

alpaca-portfolio-manager

Manage your portfolio by percentage, using Alpaca.
JavaScript
1
star