What Is Amazon SES and How to Use It?

Amazon Web Services (AWS) is probably the most widely adopted cloud computing platform. Amongst virtual servers, artificial intelligence services, and numerous types of databases, they offer a simple email service – Amazon SES. If your app is already hosted on Amazon, you can definitely think of integrating it to your email infrastructure as well. In this post, we will explain how Amazon SES differs from dozens of other email services, review its strengths and weaknesses, and demonstrate how it can be set up and integrated within your infrastructure.  

What is Amazon SES?

Amazon SES (Simple Email Service) is a cloud-based email service for sending both transactional and mass emails. Amazon SES offers a wide list of possible integrations: SMTP interface, AWS SDKs for seamless integration with your apps, and even email clients or other types of software. 


Why use it?

Amazon SES can boast its reliable infrastructure at a reasonable cost. Amazon prices are very competitive compared to other solutions available on the market. If you check customers’ reviews, you will notice it as the most often mentioned advantage.

We will take a closer look at Amazon prices as well as its advantages and disadvantages a bit later on in this article. Now, let’s get back to the main features. 

Amazon SES features the following capabilities:

  • High deliverability. Deliverability rate is one of the main parameters to consider when choosing an email sending service. Amazon takes reputation and whitelisting seriously by supporting all three authentication mechanisms (DKIM, SPF, and DMARC). In addition, you can track your sending activity and manage your reputation. 
  • Content personalization with replacement tags (read more about email personalization in this article).
  • Email receiving. With Amazon SES, you can not only send emails but also retrieve them. In this case, you have a set of flexible options, as well as usage of the received message as a trigger in AWS Lambda. We won’t go into details of email receiving in this article, so if you are interested in this feature, learn more from the official documentation

The most obvious use case for Amazon SES is supplementing a list of other AWS services you already work with. Amazon SES easily integrates with Amazon CloudWatch, Amazon EC2, AWS Elastic Beanstalk, AWS IAM, AWS Lambda, Amazon Route 53,  Amazon S3, Amazon SNS, and Amazon WorkMail. If your app is hosted in Amazon EC, and it sends emails with the Simple Email Service, the first 62,000 of your monthly emails will be free. 

This way, if you host your app in Amazon EC2 and need a scalable way of sending emails, Amazon SES is a beneficial choice.

Amazon SES cost

Let’s get back to pricing. We have already mentioned that if your app is a part of Amazon (EC2 or Elastic Beanstalk) infrastructure, then you are eligible for a free tier, and, the first 62,000 emails are free every month. 

For all other cases, Amazon’s policy of “pay for what you actually use” applies. 

For emails over the 62,000 limit, you will pay as much as $0.1 for every 1,000 emails you send + $0.12 for each GB of attachments. 

If your app is not hosted on Amazon’s server, the cost will be the same: $0.1 for every 1,000 emails you send + $0.12 for each GB of attachments. The only difference is that you start paying from the first message sent. This means that 10,000 emails without attachments will cost you $1 only. If each of these messages have a 1 MB attachment, you will add $1.18 to your payment (Amazon SES email size is limited to 10 MB). This means up to $3 per 10,000 of emails without monthly charges! 

If you need a dedicated IP address for more security, it will cost and additional $24.95 per month. 

You will find the detailed pricing here as well as a link to the AWS calculator, which is very helpful in cost estimation. 

Pros and Cons of Amazon SES

Amazon services definitely have both fans and haters, but in general, the concept and especially the cost of Amazon SES are more than inspiring. However, even the moon has its dark side. So, let’s sum up the pros and define the cons. In addition to our own experience with Amazon SES, we reviewed what users say about it on Capterra, TrustRadius, Quora, and Stackoverflow. 

Pros: 

  • high deliverability and reliability along with high sending rates
  • no need for additional maintenance once you have all set up
  • best quality to price ratio
  • a comprehensive set of tools for both email receiving and further management

Cons:

  • A complicated initial configuration. Well, we would call it rather detailed and lacking exhaustive documentation, which you need when you start working with a new service. But we have solved this issue right in this post – see the step-by-step guide below!
  • Initial limitations before you get approved and verify your sending domains. You need to correctly configure Amazon SES and expand your limits by submitting requests. 
  • Amazon SES is a simple sending service, not a marketing platform. However, many users find the lack of template builders confusing. If you are not a web developer and need to send responsive emails with Amazon SES, check this article to have this pain solved. 
  • In addition to the previous point, Amazon SES doesn’t provide you with an email list storage. 

Alternatives

How does Amazon SES compare to other services? It is often analogized to Sendgrid or Mailchimp, which are email marketing platforms rather than email sending services. Amazon SES offers both SMTP and API integration. On the other hand, it is simply for email sending, and doesn’t feature additional options like drag and drop templates, A/B testing, or detailed analytics.

There are several tools similar to Amazon SES in its functionality:

  • Pepipost, an email sending service, which can be integrated via API or SMTP relay, and offers competitive pricing as well.
  • Mailgun, an email service for developers, which you can also integrate with your app via API or SMTP. In addition to email sending, It offers email list management and validation. Compared to Amazon SES, Mailgun is a much more expensive tool.
  • ClickSend, a dedicated email sending service. You can integrate it via API and SMTP or use its dashboard for marketing emails. 

It is worth mentioning here that there are several platforms built on top of Amazon SES. They use it as a delivery service and add extra functionality like email templates. EmailOctopus and Sendy are are these types of tools. 

Step-by-Step setup

If you have decided to go with Amazon SES or at least experiment with it, then this paragraph is for you. 

We always recommend following the official documentation. For Amazon SES, you will find a very comprehensive guide here. Indeed, there are many details you should pay attention to when configuring Amazon SES for the first time. In addition, the official guide has dozens of sections, which are interlinked, and it’s very easy to get lost if trying to dive deeper. So, we gathered the most important points here, briefly explained them, and added links to the corresponding sections of the official documentation.  

Step 1. If you are totally new to AWS, you need to create an AWS account first. You will be required to enter your credit card information at the registration stage but you won’t be charged until you start using paid services. Select a free plan to start and you will get access to all Amazon services.

Step 2. Go to the AWS Management Console and select Simple Email Service from the list of services. 

AWS Management Console Home page

Step 3. Verify email address identities. Yeah, it’s a bit annoying, but it’s a matter of security and high deliverability that we have mentioned before. You need to verify all email identities you use.  

Remember that email addresses are case sensitive. Another important thing in using AWS is its Regions. They are the physical locations of Amazon data centers available to any customer. These regions don’t limit the usage of AWS services for you, as their purpose is distributing workloads. When getting started, you don’t need to worry about this, but when you scale your services, you should remember the corresponding limits. In addition, email verification is connected to the region. Follow this Amazon SES guide to verify your email address identities. 

The easiest way to verify an email address is to use the Amazon SES console. It doesn’t require any coding skills. Even if you are not tech-savvy, you will be able to walk through this process within seconds: you will need to enter your email address and then press a link in a confirmation message that you will receive in your inbox.

Amazon SES email verification - Amazon SES guide on the Mailtrap blog

Domain verification is a standard procedure as well: you need to add a TXT record to your domain’s DNS server. For full details, click here

Once your email address is successfully verified, you can start sending emails from it. But note that you start in a sandbox mode. This means that you can send:

  • emails to verified email addresses and domains or to the Amazon SES mailbox simulator
  • up to 200 messages in 24 hours
  • only 1 message per second

Sounds complicated? A bit, but this is the price of security and sender reputation. 

For experimenting with Amazon SES and understanding how it works, the sandbox mode is enough. To move forward and start sending messages to your customers, without a need to verify recipients inboxes/domains, you should submit a request via the AWS Management Console. In your request, you should describe how you are going to use Amazon SES, build your mailing lists, handle bounces, etc. The full procedure is described here

Step 4. Integration. Once you have successfully completed verification, reviewed main AWS definitions, and figured out how it actually works, you can move to the email sending. As we have already mentioned, you can use SMTP or API. 

At this step, you should define exactly how you would like to send your emails. With SMTP you can:

  • Send an email from your application if you are using a framework that supports the SMTP authentication.
  • Send messages from software packages you already use: blogging platform, workflow system, etc. See the example of integration with Jira here
  • Send emails right from your email client. Amazon SES documentation provides an example of integration with Thunderbird
  • Finally, integrate it with a server where you host your app (Postfix, Exim, and other examples.)

Obtaining Amazon SES SMTP credentials is very easy as well as integrating your email client or software package. These options might be a good fit for non-developers as well. 

API integration requires definite technical skills and can be used to:

  • make raw Query requests and responses
  • use an AWS SDK
  • use a command line interface

For details, click here

Now it’s time to go from theory to practice. Let’s review one of the widely used types of integration: sending emails from WordPress using Amazon SES. 

Amazon SES with WordPress

We assume that you have already obtained your SMTP credentials and switched your Amazon SES instance to production mode as described above. 

The good news is that the most complicated and time-consuming part is behind. To integrate your WordPress with Amazon SES for sending notifications or even newsletters, you have two options:

  1. The easy and less technical option is to install a proper plugin. If you search for “Amazon SMTP” in WordPress, you will get a long list of available options. We would recommend using the most popular one: WP Mail SMTP. It offers seamless integration with Amazon SES and has a detailed guide on how to do it.
  2. A more technical option is to add a snippet of code. WordPress is based on PHP so that it can use PHPMailer and your SMTP. 

Add the following code to your theme’s functions.php file:

add_action( 'phpmailer_init', 'set_phpmailer_details' );
function set_phpmailer_details( $phpmailer ) {
    $phpmailer->isSMTP();     
    $phpmailer->Host = 'SMTP_endpoint'; //Amazon SES SMTP endpoint for your region
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 587;
    $phpmailer->Username = 'Amazon_SES_USERNAME';
    $phpmailer->Password = 'Amazon_SES_PASSWORD';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->From = get_option('admin_email'); //your verified email address
    $phpmailer->FromName = "Your Name";

Email Testing with Amazon SES

Email testing is an integral part of email sending as the trust-but-verify approach works here unexceptionally 🙂 

Whichever method of integration with Amazon SES you choose, make sure to send test emails before you move to the production environment. Amazon SES takes care of your real recipients and provides you with two testing options:

  1. Sandbox mode, which we have described above in step 3 of the set-up guide. However, you won’t be able to get back to the sandbox mode after your production request is approved. This method is valid for the first time configurations in each new Amazon SES region.
  2. The Mailbox Simulator. With this, you can test different email sending scenarios both in a sandbox and production modes. Important note: messages sent to the Mailbox Simulator are billed the same way as the production emails (so you do pay for them), but don’t affect your email sending limit and sender reputation. 

How do you use it? You simply send an email to one of the simulator’s addresses according to the scenario you want to test. There are five of them:

  • successful delivery
  • bounce
  • hard bounce (recipient address is on suppression list)
  • automatic responses
  • complaint

As a result, you will receive the corresponding reply code. You can’t preview your messages and check email templates this way.

It’s obvious that you won’t cover all the test cases with Amazon SES native testing functionality. For better results, we recommend using 3rd party tools to:

  • test email sending
  • verify email content
  • check spam rate and blacklisting 

Mailtrap can help you with all three of these cases. It is an online tool for safe email testing in the pre-production environment. Mailtrap imitates the work of an SMTP server and catches your emails in the virtual inbox where you can then preview your messages, check HTML, spam report, and recommendations on what should be improved. You can use it to test your application code or current set-up by specifying it as an SMTP server or integrating with your app via API. 

With Mailtrap, you can also control emails on production by getting a Bcc’ed email copy to your Mailtrap inbox.

For other options, check our list of 38 tools for email testing

Bottom line

Amazon SES is a powerful, affordable, and simple email sending service. It takes time, effort, and some technical knowledge to get into the details of its usage. Amazon SES doesn’t offer wide marketing options, but it’s not designed for this purpose. We created this guide to help you make your choice and basic exploration of Amazon SES fast and easy. 

If you need a reliable and scalable email sending option, then Amazon SES is the right choice. If you need more capabilities and/or don’t want to get into technical details, you should take a look at other marketing platforms or tools created on top of the Amazon SES.