All Projects → yegor256 → mailanes

yegor256 / mailanes

Licence: MIT License
Smart E-mail Delivery System

Programming Languages

ruby
36898 projects - #4 most used programming language
HTML
75241 projects
shell
77523 projects

Projects that are alternatives of or similar to mailanes

coordinator-bot
A tutorial that builds a simple bot for Facebook Messenger with Ruby and Sinatra
Stars: ✭ 16 (-51.52%)
Mutual labels:  sinatra
C-Sharp-Learning-Journey
Some of the projects i made when starting to learn c#, winfroms and wpf
Stars: ✭ 95 (+187.88%)
Mutual labels:  email-sender
enumerable4j
Amazing Ruby's "Enumerable" ported to Java
Stars: ✭ 29 (-12.12%)
Mutual labels:  elegantobjects
sinator
Sinatra application generator
Stars: ✭ 19 (-42.42%)
Mutual labels:  sinatra
zaqar
Email microservice writen in Node.js
Stars: ✭ 52 (+57.58%)
Mutual labels:  email-sender
ika-shot
スプラトゥーンの勝敗記録を閲覧するWebアプリケーション
Stars: ✭ 12 (-63.64%)
Mutual labels:  sinatra
mailer
Generic mailer
Stars: ✭ 16 (-51.52%)
Mutual labels:  email-sender
mini-project
An android eCommerce application for students through which they can buy and sell used goods .
Stars: ✭ 26 (-21.21%)
Mutual labels:  email-sender
bulk-email-sender
Send Templatized Dynamic Emails Automatically
Stars: ✭ 30 (-9.09%)
Mutual labels:  email-sender
mailstrom
Mail delivery via a separate thread [rust library]
Stars: ✭ 39 (+18.18%)
Mutual labels:  email-sender
cchecksapi
CRAN checks API
Stars: ✭ 34 (+3.03%)
Mutual labels:  sinatra
modularize sinatra
Modularized Sinatra Skeleton Generator
Stars: ✭ 24 (-27.27%)
Mutual labels:  sinatra
pynotify
A Python package to send emails like humans.
Stars: ✭ 21 (-36.36%)
Mutual labels:  email-sender
cactoos-http
Object-Oriented HTTP Client
Stars: ✭ 37 (+12.12%)
Mutual labels:  elegantobjects
books
List of all Ruby books
Stars: ✭ 49 (+48.48%)
Mutual labels:  sinatra
Bon Voyage
A Hotel booking Android application. This app consists of a Google, Facebook and email login. Firebase is used as the database. The user can select the destination, select the hotel, and book the rooms there. After the booking process is complete, a confirmation email is sent to the user.
Stars: ✭ 19 (-42.42%)
Mutual labels:  email-sender
Email-Spammer
Great script for sending and spaming emails! gmail, yahoo, outlook, hotmail.
Stars: ✭ 79 (+139.39%)
Mutual labels:  email-sender
raygun4ruby
The Ruby & Ruby on Rails provider for Raygun
Stars: ✭ 37 (+12.12%)
Mutual labels:  sinatra
rack-simple user agent
Rack::SimpleUserAgent is stupidly simple UA detector
Stars: ✭ 13 (-60.61%)
Mutual labels:  sinatra
timber-ruby
🌲 Great Ruby logging made easy.
Stars: ✭ 155 (+369.7%)
Mutual labels:  sinatra

EO principles respected here Managed by Zerocracy DevOps By Rultor.com We recommend RubyMine

Build Status PDD status Test Coverage Maintainability License

Availability at SixNines Hits-of-Code

It's an e-mail sending web app.

Read this blog post, it explains how it works: Mailanes.com Helps Manage Newsletters and Mailing Lists.

How to Configure?

There are few entities you can configure via simple YAML settings, including lists, lanes, campaigns, letters, and recipients.

List

title: My subscribers
notify:
  # Notify this email every time a new subscriber
  # is added to the list through the /subscribe URL
  email: [email protected]
  # Notify in Telegram chat. You can get this number
  # just by starting a chat with https://t.me/mailanes_bot
  telegram: 136544085
  # You may ignore some notifications
  ignore:
    - subscribe
    - unsubscribe
    - add
    - comment
    - download
    - upload
    - bounce
# List of GitHub account who also have access to this list
# and can add recipients to it, via /add?list=ID URL.
friends:
  - yegor256
# If this is set to TRUE an email right after being added
# to this list will be de-activated in all other lists
exclusive: true
# If this is TRUE, all new recipients that get into the list via the
# /subscribe link, will be marked as non-yet-confirmed. They will have
# to click the link, which is available in your Markdown template
# as {{confirm}} (similar to the {{unsubsribe}} you have there).
# The default is FALSE.
confirmation_required: true

Lane

title: Monthly newsletters
# The FROM field of all letters to be sent from this
# Lane. This can be overwritten by each individual Letter.
from: Yegor Bugayenko <[email protected]>
# The CC of the email to be sent
cc:
  - Yegor Bugayenko <[email protected]>
# The BCC of the email to be sent
bcc:
  - Yegor Bugayenko <[email protected]>
# The TO field of all emails to be sent, which
# you don't need to specify usually, since this
# address is taken from the recipient details, but sometimes
# you may need this.
to: Yegor Bugayenko <[email protected]>
# The email to collect all bounces (the default is `[email protected]`)
bounces: [email protected]
# SMTP parameters of the email sending server
smtp:
  host: email-smtp.us-east-1.amazonaws.com
  port: 587
  user: AKIAI1TIS4FF6UGJT3CQ
  password: ArPxO8gf56y02G8cKM80IpvMQve8Pss+L4+inJZ3UG3t
# Here you can specify the Telegram transport details, if
# some of your letters are going to be delivered via Telegram.
telegram:
  chat_id: 7389473289

Campaign

# The title of the campaign
title: Monthly
# Stop the campaign at this date (it will be deactivated automatically)
until: 03-09-2018
# Maximum amount of emails to be sent per day
speed: 100
notify:
  # Notify in Telegram chat. You can get this number
  # just by starting a chat with https://t.me/mailanes_bot
  telegram: 136544085
# Send fake emails to this address, in order to
# lower the bounce-back stats of the SMTP providers (recommended)
decoy:
  # How many fake emails per each real email
  amount: 0.1
  # Destination address ('*' will be replaced by a random 0-9 number)
  address: my-fake***@example.com

Letter

# The title of the letter
title: Aug 2018
# The subject of all emails to be sent
subject: There are some great news, guys!
# The FROM field of all emails to be sent
from: Yegor Bugayenko <[email protected]>
# The CC of the email to be sent
cc:
  - Yegor Bugayenko <[email protected]>
# The BCC of the email to be sent
bcc:
  - Yegor Bugayenko <[email protected]>
# The TO field of all emails to be sent, which
# you don't need to specify usually, since this
# address is taken from the recipient details, but sometimes
# you may need this.
to: Yegor Bugayenko <[email protected]>
# When this Letter has to be deactivated
until: 03-09-2018
# For how many days/hours/minutes the campaign should
# not send out any letters after it sends this one. There
# are three possible formats:
#  hh:mm:ss    - exactly how much time it should relax
#  dd-mm-yyyy  - when exactly it should relax
#  sss         - in how many seconds
relax: "20:0:0"
# The ID of the letter to quote while sending this one
quote: 12
# This can be either SMTP or Telegram. If it's SMTP, you have
# to specify the SMTP section in the Lane. If it's Telegram,
# you have to specify telegram chat ID in the Lane.
transport: SMTP
# Maximum amount of emails to be sent per day
speed: 100
# Turn OFF email opening tracking feature (ON by default)
tracking: off

Here is how your Liquid template may look like:

{% if first %}
{{first}},
{% else %}
Hi,
{% endif %}

How are you? Thanks for joining my list. Please
[click here]({{confirm}}) to confirm that you are serious
and want to stay.

—<br/>
Yegor Bugayenko<br/>
To remove your email ({{email}}) from the list, [click here]({{unsubscribe}}).

Recipient

Not implemented yet...

API

You can retrieve the data from the system via the API. First, you have to get the authorization code from the API page. Then, add it to each HTTP request you make, as auth URI parameter. For example, to see the total count of all active subscribers of your list:

/api/lists/123/active_count.json?auth=74fa8672...

All URIs:

  • /api/lists/:id/active_count.json: total active subscibers in the list
  • /api/lists/:id/per_day.json: new subscribers per day (last 10 days stat, change with days)
  • /api/campaigns/:id/deliveries_count.json: deliveries per day (last day, change with days)
  • more coming...

How to contribute

Read these guidelines. Make sure you build is green before you contribute your pull request. You will need to have Ruby 2.3+, Java 8+, Maven 3.2+, PostgreSQL 10+, and Bundler installed. Then:

$ bundle update
$ bundle exec rake

If it's clean and you don't see any error messages, submit your pull request.

To run a single unit test you should first do this:

$ bundle exec rake pgsql liquibase sleep

And then, in another terminal (for example):

$ bundle exec ruby test/test_campaign.rb -n test_iterates_lists

Should work.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].