| Website | API Reference | Getting Started Guide |
Thunder Mail is an open source app for sending millions of emails using API for as cheaply as possible.
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
Our APIs provide a customizable integration approach for your transactional email.
Gain peace of mind using the power of Amazon SES to send your emails reliably.
With each click and open tracked alongside the bounces and unsubscribes, you’ll be able to monitor the performance of each and every email.
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.
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
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
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.
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
# API key encryption secret (16 chars length)
ENCRYPTION_SECRET=
# AWS SES configuration - as we extracted in the previous section.
SES_ACCESS_KEY_ID=
SES_SECRET_ACCESS_KEY=
SES_REGION=
# The email address that emails will be sent from.
SES_EMAIL_ADDRESS=
Start the Docker file.
sudo docker-compose up
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: '[email protected]',
destination: {
to: ['[email protected]', '[email protected]'],
cc: ['[email protected]', '[email protected]'],
bcc: ['[email protected]', '[email protected]'],
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