/thunder-mail

Thunder-Mail, an open source transnational emails API.

Primary LanguageJavaScriptApache License 2.0Apache-2.0

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

Benefits

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

Sendgrid-vs-SES
Read more

Getting Started

Setting up Thunder Mail (docker)

This guide was written for linux-based machines (Ubuntu 16.04).

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 https://github.com/Circle-gg/thunder-mail.git

Navigate into the cloned directory.

cd thunder-mail

Create environment file.

vi .env

Sample .env file

BLUEBIRD_WARNINGS=0

# API key encryption secret
ENCRYPTION_SECRET=

# Postgres configuration
PSQL_USERNAME=
PSQL_PASSWORD=
PSQL_DATABASE=
PSQL_HOST=

# Your organization domain, should be unique
DOMAIN=test

# AWS SES configuration
SES_ACCESS_KEY_ID=
SES_SECRET_ACCESS_KEY=
SES_REGION=

#The email you will send emails from. the from address in the emails you send
SES_EMAIL_ADDRESS=

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: 'YourFromEmail@mail.com',
        destination: {
            to: ['recipientTo1@mail.com', 'recipientTo2@mail.com'],
            cc: ['recipientCC1@mail.com', 'recipientCC2@mail.com'],
            bcc: ['recipientBCC1@mail.com', 'recipientBCC2@mail.com'],
            subject: 'Hi, Welcome to {{name}}',
            templateData: { name: 'Thunder-Mail' }
        },
        message:
            {
                subject: 'default subject',
                body:
                    {
                        text: 'default text',
                        html: 'Hello, <a href=\'google.com\' target=\'_blank\'>Google.com</a>'
                    }
            }
    },
    json: true
};

rp(options)
    .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