tripikad / trip2

Estonian largest travel community built on Laravel and Vue
6 stars 6 forks source link

Decide e-mail provider, episode III #644

Closed kristjanjansen closed 8 years ago

kristjanjansen commented 8 years ago

As it seems Mandrill is going to be shut down, let's re-visit mail provider topic. This is a continuation of the topic started at #606 and #98

Option A: Sendgrid

https://sendgrid.com/pricing

Free plan

Price: Free

Limit: 400 per day / 12000 emails per month (when sending bulk e-mail to all our users it takes 40000 / 12000 ~ 4 months)

Paid 40000 plan

Price: 9.95/month

Limit: 1333 per day / 40000 emails per month (when sending bulk e-mail to all our users it takes 1 day and we gonna be out of quota for that month, extra mails for that month cost $0.0010 per email)

Paid 100000 plan

Price: 19.95/month

Limit: 33333 per day / 1000000 emails per month (when sending bulk e-mail to all our users it takes 1 day and we have 2000 per day / 60000 extra for that month)

Setting up

https://sendgrid.com/docs/Integrate/Frameworks/laravel.html https://github.com/sendgrid/sendgrid-php https://github.com/s-ichikawa/laravel-sendgrid-driver

Tags and custom data

https://sendgrid.com/docs/Integrate/Frameworks/laravel.html https://sendgrid.com/docs/API_Reference/SMTP_API/categories.html (No limit on tag count) https://sendgrid.com/docs/API_Reference/SMTP_API/unique_arguments.html

Bounces

No Laravel-specific integration https://sendgrid.com/docs/API_Reference/Webhooks/event.html

DNS whitelisting

Does not seem to be required https://sendgrid.com/docs/User_Guide/Settings/Whitelabel/index.html

Option B: Mailgun

https://www.mailgun.com/pricing

Free plan, unverified DNS

Price: Free

Limit: 300 per day / 9000 emails per month (when sending bulk e-mail to all our users it takes 40000 / 300 = 133 days)

Also, there is a "Sent via Mailgun.org" in every sent message (in header or body?)

Data retention for logs and the Events API is 2 days.

Free plan, verified DNS

Price: Free

Limit: 333 per day / 10000 emails per month (when sending bulk e-mail to all our users it takes 40000 / 333 = 120 days)

Verifying needs some DNS mangling https://documentation.mailgun.com/quickstart-sending.html#verify-your-domain

Data retention for logs and the events API is 2 days.

Paid plan, verified DNS

Price: $15/month

Limit: 17000 per day / 510000 emails per month (when sending bulk e-mail to all our 40000 users it takes one day and leaves 15600 per day headroom for that month)

Data retention for logs and the events API is 30 days.

Setting up

With SMTP: https://jamie.sh/tutorials/7/setting-up-mailgun-with-laravel-5

With HTTP API: https://github.com/Bogardo/Mailgun

Tags and custom data

https://documentation.mailgun.com/user_manual.html#tagging (A single message may be marked with up to 3 tags)

https://documentation.mailgun.com/user_manual.html#attaching-data-to-messages

Bounces

There is no direct API for webhook bounces in https://github.com/Bogardo/Mailgun so it has to be added via underlying https://github.com/mailgun/mailgun-php

See:

https://documentation.mailgun.com/api-suppressions.html#view-all-bounces https://documentation.mailgun.com/user_manual.html#tracking-bounces

Option C: Amazon SES

https://aws.amazon.com/ses/pricing/

Free plan

62000 messages per month to any recipient when you call Amazon SES from an Amazon EC2 instance (we do not)

Paid plan, sandboxed

Price: $0.0001 per e-mail.

Limit: 200 per day (when sending bulk e-mail to all our users it takes 40000 / 200 = 200 days and $4)

Verification: Sender addresess, sender domain and recipient addresses need to be verified.

Paid plan, without sandbox

Price: $0.0001 per e-mail.

Limit: as many as needed (will be decided case by case basis on manual application)

Verification: recipient addresses do not need to be verified.

Setting up

via SMTP: https://tuts.codingo.me/sending-emails-over-queue-with-aws-ses

via HTTP: Unknown, could theoretically be accessed via https://github.com/aws/aws-sdk-php-laravel

Bounces

Bounce webhooks are handled via Amazon SNS https://github.com/ringtrail/laravel-sns-driver

Tags and custom data

?

Option D: Campaignmonitor

https://www.campaignmonitor.com/pricing/

Paid plans

Prices:

$9 83 per day / 2500 per month for 500 users in month

$29 416 per day / 12500 per month for 2500 users in month

(when sending bulk e-mail to all our users it takes 50000 plan and $299)

Setting up

https://github.com/Casinelli/Laravel-CampaignMonitor https://github.com/campaignmonitor/createsend-php

https://laracasts.com/lessons/transactional-emails-with-campaign-monitor-in-laravel https://github.com/laracasts/Transactional-Emails-in-Laravel-with-Campaign-Monitor

Bounces

https://www.campaignmonitor.com/api/campaigns/#campaign_bounces

Tags and custom data

http://help.campaignmonitor.com/topic.aspx?t=1159

kristjanjansen commented 8 years ago

This topic never ends. https://www.sparkpost.com/

kristjanjansen commented 8 years ago

Lets go for Sendgrid for now