Whether you need to send a few emails a day or up to a million emails a month, these cloud SMTP services can provide a scalable and secure solution to meet your business needs. Today I will be exploring these 3 services, my experiences with them and which one should be used for which purpose in your app. There are of course many more services such as Mailgun, Mailjet, Mailchimp, however I do not have experience using these services therefore I cannot speak on them. For this comparison I will be using transactional emails as my use case. Transactional emails are emails that are triggered by a backend server upon an action such as a user signing up for an account, a password recovery email or sending an invoice upon an online purchase.
Twilio SendGrid (formerly just SendGrid) was acquired by Twilio in 2019 adding email to their array of communication products, such as voice, sms messaging and video.
SendInBlue is targeted at marketing campaigns with a focus on reports on click rates, email heat maps and email contact lists.
Amazon SES (Simple Email Service) is a full scale no frills SMTP service designed for mass email communications at scale.
All 3 services offer a web console to configure and set up your SMTP server. They all offer an SMTP endpoint with the port number for your app to plug into and send emails. All 3 also offer a web API where your app can talk to the service using an API key and use their helper methods to send emails. This is my preferred method of programming emails. To get up and running on all 3 services, it is simple as authenticating your domain using SPF, DKIM and DMARC entries that plug into your domain DNS settings, installing the correct package for your backend environment, and authenticating using your API key.
The only caveat to getting started on Amazon SES is that AWS puts your account in Sandbox mode initially placing limitations on your usage.
To get out of sandbox mode, and into production you must plead a case to the Amazon overlords on how you will use their service, how you will manage bounce backs, complaints and unsubscribe requests. This may be a roadblock for some developers that just want their app to send the occasional email and not having to manage formal email processes. The reason Amazon does this, is to protect its IP Addresses having a bad reputation score due to spam mail or malicious mail being sent from its IP addresses.
All 3 services support email templating to reduce the amount of code you need to write to compose your emails. A template defines the shell of your email and can accept dynamic parameters depending on the context of the email. Twilio SendGrid and SendInBlue offer drag and drop visual editors to easily design emails with support for HTML editing, mobile views and various draggable components. Amazon SES, however only supports creating templates using HTML code through its CreteEmailTemplate API.
Twilio SendGrid and SendInBlue offer a large amount of tools inside their web console interface including a fully featured dashboard showing email statistics, marketing tools, contact management, quota tracking, reputation metrics and template builders. Amazon SES has more of a barebone interface as a lot of its functionality is left up to user using its service.
I'm going to break pricing down to 2 use cases. Light usage to medium usage (a small to medium app with consistent traffic) and heavy usage (a large scale app with thousands of users and/or scheduled email campaigns).
Twilio SendGrid offers a free plan that allows you to send 100 emails a day (3100 emails a month). SendInBlue however allows 3x as many emails per day with 300 emails a day (9300 emails a month). Amazon SES, if your application is hosed on Amazon EC2 or using AWS Lambda functions can send a whopping 2000 emails a day (62,000 a month). However, if you host your application elsewhere it will cost $0.10 for every 1,000 emails (with no free tier offering).
Depending on how many emails you consider as heavy, Twilio SendGrid and SendInBlue have a few different paid options. Amazon SES have a fixed pricing structure of $0.10 for every 1,000 emails you send. I'll share the plans for each service below:
Amazon SES Pricing Use Cases
100,000 emails/month (hosted on AWS) - $3.80
1,000,000 emails/month (hosted on AWS) - $93.80
100,000 emails/month (hosted elsewhere) - $10.00
1,000,000 emails/month (hosted elsewhere) - $100.00
If you are a freelance developer working on side projects or have some small clients (up to 100 users), SendInBlue's free tier is a great option to use. You will get to use the drag and drop template editor to save you time coding HTML for your emails. You will also get all the benefits of their campaign builders, statistics, automated workflows and contact management.
If you are working on a mid sized project with lets say over 100 users, and up to 1000 users, Twilio SendGrid's Essentials package is a great option at $29.95 USD a month. As you can see, the same comparable plan from SendInBlue would set you back $99 USD. Using Twilio also means that you can extend the functionality to integrate SMS notifications, whatsapp messages, voice calls etc. They are the industry leaders in customer communication technology.
Lastly, Amazon SES is the best option for enterprise large scale projects. Amazon SES is used by companies like Reddit and Netflix. When going above a million emails a month, Amazon SES is the most cost effective option. At this scale, you are likely to have a team of email marketers using their own sets of tools to build templates, capture statistics etc. which means you will not require this functionality from Amazon SES. Amazon SES would just be your means of delivering emails reliably and swiftly.