Skip to content
Shoot billions of emails using AWS - SES - Lambda
Branch: master
Clone or download
JefersonS Merge pull request #393 from MoonMail/feature/block-adding-unsubscrib…
…ed-recipient

Feature - Blocking subscription of previous unsubscribed recipients
Latest commit 9b2305e Mar 28, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.ci
.templates Open sourcing the private part of moonmail (user management and billi… May 29, 2018
api Removing unsused code Feb 28, 2019
campaigns-microservice Updating the documentation (#312) Apr 12, 2018
emails-microservice Removind old locked versions Dec 17, 2018
events-router Removind old locked versions Dec 17, 2018
events Fixing Recipients code to export more than 1k recipients Dec 21, 2018
extensions Open sourcing the private part of moonmail (user management and billi… May 29, 2018
lists-microservice Fixing Lists Import, creating new Stream and Lambda; Oct 17, 2018
lists
private Merge pull request #380 from JefersonS/feature/free-aws-marketplace-plan Dec 17, 2018
support/screenshots-service Removind old locked versions Dec 17, 2018
template-marketplace Removind old locked versions Dec 17, 2018
webhooks-microservice
.babelrc Basic native segments support Jun 7, 2017
.eslintrc.json Automations refactor (#307) Apr 9, 2018
.gitignore
.travis.kkk.yml CI/CD for events router Jul 4, 2018
.travis.yml
LICENSE Update year + url to MM Oct 15, 2016
README.md Remove automations Feb 21, 2019
admin.env Open sourcing the private part of moonmail (user management and billi… May 29, 2018
package.json Adding footer feature (paid footer) + fixing free footer Jul 27, 2018
required-variables.md
s-project.json Add meta sync plugin Jul 27, 2016
s-resources-cf.json add DependsOn attributes for AWS::DynamoDB::Table (#327) Jun 8, 2018
s-templates.json Feature - campaign activity based segments (#284) May 10, 2018
yarn.lock Adding footer feature (paid footer) + fixing free footer Jul 27, 2018

README.md

MoonMail

Build Status Coverage Status Twitter GitHub license Gitter

Send email marketing campaigns with Amazon SES. Let Amazon Lambda compose email by email and literaly scale it to infinite.

With MoonMail you can: create & edit lists of recipients (email addresses) and store them within a DynamoDB. Create & edit html email marketing campaigns, send them and track their opens and clicks.

The biggest magic of MoonMail: SEND BILLIONS OF EMAILS WITH NO SERVERS!

See the wiki for detailed specs and infrastructure graphs.

Live Features

Free Perks

Getting Started

Requirements

Notes about the serverless version

Version 0.5.x is required to run several parts of the MoonMail API such as the api and events sub-packages, for these, the root of the repository provides the required s-project.json, s-resources-cf.json and s-templates.json. Find more information about how to handle functions with serverless 0.5 here.

The rest of the services require serverless 1.x and are self-contained. For details on how to manage them, you should follow the instructions provided in their respective README.md

Dependencies

Install serverless 0.5 globally:

yarn global add serverless@0.5.6

Install the root project dependencies:

yarn install

Install the API dependencies:

cd api && yarn install

Install the event processors' dependencies:

cd events && yarn install

Installing the dependencies for the rest of the services follow the same convention. You just need to cd into it and install its dependencies.

Initialize and configure the Serverless 0.5 project

sls project init -c -n your-lower-case-project-name

Configure the s-variables-<stage>-<region>.json files inside the _meta directory by providing the required variables.

Deployment

Servereless 0.5 resources

Create all the needed resources in your AWS account:

sls resources deploy

Deploy all the Lambda functions:

sls function deploy

Deploy MoonMail events:

sls event deploy

Create the API Gateway endpoints:

sls endpoint deploy

Troubleshooting:

Due to the amount of resources it might be difficult to deploy everything at once. It's totally fine to cd into sub-directories of api or events and perform the above mentioned actions in order to reduce the scope of deployments. Also, using the dash deploy subcommand might be useful when deploying independent functions. Aside from that, there are some functions depending on serverless 0.5 which require NodeJS > 4.3. For those, you will have to change the runtime version through the AWS Lambda Console because it's not supported to do so through Serverless on this version.

If the above doesn't solve your issues, there are a couple of things you should double check:

1.- Your current Serverless version (different parts of the project require different versions), this is how you can do it:

sls --version

2.- You have provided all the required variables in the _meta directory.

3.- An admin.env file should exist in the root of the project containing the AWS profile to be used by the deployments (this only applies for the function and resources depending on sls@0.5). Here is an example of what it should look like:

AWS_DEV_PROFILE=moonmail-dev
AWS_PROD_PROFILE=moonmail-prod  

4.- The provided profile in admin.env should exist in your ~/.aws/credentials

Serverless 1.x resources

To configure and deploy these, you will have to follow the instructions provided in their respective README.md

Live demo

If you have set up everything correctly you'll be able to send an email campaign using our demo ui

Questions?

Please post your questions on StackOverflow and tag them with: moonmail.

Contributing Guidelines

Contributions are always welcome! If you'd like to collaborate with us, take into account that:

Feel free to contact us if you have any question

License

MoonMail is available under the MIT license. See the LICENSE file for more info.

Professional Help

If you need support getting MoonMail into production in your AWS account, contact the Email Marketing and Serverless Experts:

Promote your Serverless services by creating a MoonMail account

MoonMail Email Marketing Software done the right way

You can’t perform that action at this time.