by Circle-gg


Thunder-Mail LICENSE.txt Gitter

| Website | API Reference | Getting Started Guide |

What is Thunder Mail?

Thunder Mail is an open source app for sending millions of emails using API for as cheaply as possible.

Send millions of emails at $0.10 per 1000 emails.

Start sending emails withing 5 minutes quick start

Checkout developers section in our website Thunder-Mail Developers for more detailed information and guides, on how to use Thunder-Mail


Integrate and deliver via API in 5 minutes or less.

Our APIs provide a customizable integration approach for your transactional email.

Robust and reliable delivery.

Gain peace of mind using the power of Amazon SES to send your emails reliably.

Real-Time monitoring.

With each click and open tracked alongside the bounces and unsubscribes, you’ll be able to monitor the performance of each and every email.

Transactional email templates.

Send highly targeted emails without worrying about dangerous deploys or bloated code. With native support for Handlebars syntax dynamic templating, you can send multiple templates using our APIs.

Compare to SendGrid

Read more

Getting Started

Heroku 1-Click Deploy


You will have to configure the following at Heroku config vars after the deployment and restart the dynamo: SES_SECRET_ACCESS_KEY, SES_REGION, SES_EMAIL_ADDRESS, SES_ACCESS_KEY_ID, DOMAIN

Setting up Thunder Mail (docker)

Retrieving AWS credentials

mail-for-good did a well documented and explained guide on how to get AWS credentials here Follow their guidance for getting AWS Access Key & Secret Access Key

Installing Docker

Docker is a great tool for automating the deployment of Linux applications inside software containers We will use Docker to deploy thunder-mail as a hustle-free app.

Follow these instruction to install docker.

Installing Thunder-Mail

Clone the repository.

git clone

Navigate into the cloned directory.

cd thunder-mail

Create environment file.

vi .env

Sample .env file

# API key encryption secret (16 chars length)

# AWS SES configuration - as we extracted in the previous section.

# The email address that emails will be sent from.

Start the Docker file.

sudo docker-compose up

Quick Start

After you have deployed Thunder-Mail app either locally or on a cloud instance and configured your .env file

Use this code to send your first email.

const rp = require('request-promise');

let options = {
    method: 'POST',
    uri: 'http://localhost:8080/api/email',
    headers: {
        authorization: 'Bearer AAAAAA-AAAAAA-AAAAAA-AAAAAA',
        'content-type': 'application/json'
    body: {
        source: '',
        destination: {
            to: ['', ''],
            cc: ['', ''],
            bcc: ['', ''],
            subject: 'Hi, Welcome to {{name}}',
            templateData: { name: 'Thunder-Mail' }
                subject: 'default subject',
                        text: 'default text',
                        html: 'Hello, <a href=\'\' target=\'_blank\'></a>'
    json: true

    .then(function (parsedBody) {
        // POST succeeded...
    .catch(function (err) {
        // POST failed...

Special thanks to mail-for-good for the inspiration to build and open source Thunder-Mail