UPCOMING EVENT Discover how nOps streamlines your cost optimization at AWS re: Invent - BOOK A MEETING

NEW Featured eBook: AWS Cloud Cost Allocation: The Complete Guide - Download Now

In this post, we’ll talk about Amazon SES, its benefits and features, and how to use it.

What is AWS SES?

Amazon Simple Email Service (Amazon SES) is a cloud-based email sending service designed to help you send marketing, notification, and transactional emails, using your own email addresses and domains.

Amazon SES provides a flexible IP deployment model, allowing users to choose between shared, dedicated, and customer-owned IPs depending on their specific needs. Additionally, it includes features such as content filtering, email authentication, and comprehensive analytics to help improve deliverability and track email sending performance.

Amazon Simple Email Service (image source: AWS)

What are the benefits of Amazon SES?

Top reasons you might want to use Amazon SES include:

Simplicity and scalability

Building a large-scale email solution can be complex and costly; with SES, you don’t have to deal with infrastructure concerns like email server management, network configuration, or IP address reputation. And when it comes to scaling, SES can handle everything from small volumes to billions of emails each month, seamlessly scaling with your business needs without requiring manual intervention.

Reliability and high deliverability

Amazon SES offers tools and features like IP warm-up, domain verification, and DKIM authentication to help achieve high deliverability rates for emails. It’s built on highly reliable and available AWS infrastructure so you don’t have to worry about downtime.

No upfront costs

Many third-party email solutions require contract and price negotiations, as well as significant up-front costs. With a pay-as-you-go model, Amazon SES eliminates the need for upfront costs. Amazon also offers a free tier (you can sign up for a free account here).

Easy integration with other AWS services

Amazon SES provides seamless integration options with many other AWS services like AWS Lambda, Amazon SNS, and Amazon CloudWatch unlocking a variety of use cases and synergies.

For instance, you can: add email sending capabilies to any application built on AWS, use SNS to notify you of emails that were successfully delivered or bounced, take action on your received emails by triggering AWS Lambda functions with custom code, control permissions via AWS Identity and Access Management, etc.

Comprehensive Analytics

Amazon SES offers detailed analytics on email deliverability and recipient engagement, which can be helpful for optimizing marketing emails and improving response rates.

What are features of Amazon SES?

Some key features of Amazon SES include:

Email Sending Options: Users can send email communication using the Amazon SES API, SMTP interface, or the AWS Management Console, providing flexibility in how emails are integrated and sent from applications.

Email Receiving: SES receives incoming messages and handles email processing. It stores received emails in an S3 bucket, or triggers a Lambda function, enabling automated email responses or actions.

Flexible IP Deployment: Provides options for shared, dedicated, and customer-owned IP addresses, allowing users to optimize their email deliverability based on their specific requirements.

Content Filtering and Email Authentication: Supports SPF, DKIM, and DMARC to authenticate outgoing emails and provides mechanisms to filter incoming email messages for spam and viruses.

Sending Statistics and Analytics: Offers insights through detailed reports on successful delivery, open rates, click rates, bounces, and complaints, helping users to measure performance and improve their email strategies.

Mailbox Simulator: Provides a testing environment to simulate email sending without impacting your sender reputation, useful for testing how your application handles different email sending scenarios.

Amazon SES Event Publishing: Integrates with Amazon SNS for real-time notifications on email delivery outcomes, such as deliveries, bounces, and complaints, facilitating immediate response and adjustments to email campaigns.

How does email sending work in Amazon SES?

When you send an email through Amazon SES, the process begins with your client application making a request to SES. If the email request is valid, SES accepts it and sends the message over the Internet to the recipient’s mail server using Simple Mail Transfer Protocol (SMTP). This transmission usually happens immediately, with the first delivery attempt occurring within milliseconds.
Email sending in Amazon SES (image source: AWS)

Once sent, the email can have several outcomes:

  • Successful Delivery: The email reaches the recipient’s inbox without issues.
  • Bounce: If the recipient’s email address is invalid, the Internet Service Provider (ISP) sends a bounce notification back to SES, which then informs the sender.
    A hard bounce indicates a permanent reason an email cannot be delivered, such as the recipient’s email address being invalid or non-existent. SES records this event and typically adds the email address to a suppression list to prevent future emails to this address.
    A soft bounce signifies a temporary delivery issue, like a full recipient mailbox or a temporarily unavailable server. SES will retry sending the email for a defined period before considering it undeliverable if the issue persists.
  • Complaint: If the recipient marks the email as spam, the ISP notifies SES, which forwards this complaint to the sender.
  • Auto-response: If the email is received and an auto-response (like an out-of-office reply) is generated, SES forwards this to the sender.

SES also provides feedback on each email’s delivery status, allowing senders to track the success of their emails and handle any issues, such as bounces or complaints, accordingly.

How to send an email with Amazon SES

Here are the basic steps to send an email using Amazon Simple Email Service (SES):
1. Set Up Amazon SES: First, sign up for AWS and create an IAM user with permissions to access Amazon SES. Verify your email address or domain in the Amazon SES console to authenticate your identity and enable sending.

Screenshot of the AWS management console (image source: AWS)

2. Obtain SMTP Credentials: Navigate to the Amazon SES console and create SMTP credentials under IAM. These credentials will be used to authenticate your email client or application with Amazon SES. Make sure to configure your email client by entering the provided SMTP endpoint, ensuring the ability to send emails effectively. (Full instructions with screenshots here).

3. Compose Your Email: Prepare your email content, including the sender, recipient, subject, and body. You can also choose to format the body of the email using either plain text or HTML.

4. Choose Sending Method: Use either the console to send your email, or you can send it programmatically via the SES API or SMTP interface. You can also send a test email if desired.

Screenshot of sending a test email through the Amazon SES mailbox simulator

5. Send and Monitor: Send your email through your chosen method. You can then monitor the email sending statistics and check for bounces or complaints using the SES console or by setting up notifications with Amazon SNS (Simple Notification Service).

How does Amazon SES pricing work?

Amazon SES pricing is primarily based on the volume of emails sent and the data transferred. Users pay a set amount per 1,000 emails sent and for each gigabyte of data attachments sent. Additionally, there’s a cost for using a dedicated IP address, which is optional and allows for better control over email deliverability.
Snapshot of Amazon SES pricing (image source: AWS)
Amazon also offers a free tier, which includes up to 3,000 messages without monthly charges for the first 12 months after you start using Amazon SES.

Amazon SES FAQ

What is Amazon SES vs SNS?

Amazon SES is designed specifically for email communications and related activity.

Conversely, Amazon SNS (Simple Notification Service) is a multi-channel (not just email) messaging platform that delivers notifications through SMS, mobile push, HTTP/HTTPS endpoints, AWS Lambda functions and other methods. It facilitates real-time message distribution to multiple subscribers through a pub/sub system, and is used for applications requiring instant alerts, such as new content notifications or emergency alerts.

Diagram showing how SNS transmits messages (image source: AWS)

What is Amazon SES vs SQS?

While Amazon SES is specialized for email-specific functionalities, Amazon SQS (Simple Queue Service) is used for message queuing rather than direct communication. This makes it essential for smoothing out process workflows and handling asynchronous communication within distributed systems.

SQS provides a reliable, highly scalable hosted queue for storing messages as they travel between computers. By decoupling the components of an application, SQS helps ensure that any component can scale independently, and facilitates message-driven architectures with enhanced fault tolerance.

Diagram showing a producer sending messages to Amazon SQS (image source: AWS)

Do I need a domain for Amazon SES?

While you can start by verifying individual email addresses if you’re not ready to verify an entire domain, verifying a domain provides broader capabilities and is recommended for professional use.

Verifying your domain with Amazon SES enhances your ability to manage email sending reputations and increases deliverability. It allows you to send emails from any email address at that domain, without needing to verify each email address individually.

Domain verification also enables you to implement DomainKeys Identified Mail (DKIM) signatures, which authenticate your emails and help prevent email spoofing

How can I track my Amazon SES costs and usage?

You can view your SES charges for the current billing period through the Billing Dashboard in the AWS Management Console.

Understand and optimize AWS costs with nOps

If you’re looking to understand your AWS usage and costs, nOps can help.

nOps Business Contexts transforms millions of rows of contextless data into the who, what, when and why of cloud spend — making it easy to get 100% visibility of your cloud costs and usage so your bills are never a surprise or mystery.

Allocate 100% of your AWS costs, including EKS. Kubernetes costs are often a black box — no longer with nOps. Understand and allocate your unified AWS spend in one platform.

Automated resource tagging. You don’t need to have all your resources tagged to allocate costs. Create dynamic rules by region, tags, operation, accounts, and usage types to allocate costs back to custom cost centers.

40+ views & filters. Map hourly costs by any relevant engineering concept (deployment, service, namespace, label, pod, container…) or finance concept (cost unit, purchase type, line item, cost allocation tag…).

Custom reports & dashboards for the whole team. Monthly reporting and reconciliation can take hours; with nOps only minutes. Tailor dashboards and Slack/email reports to your needs, whether you’re a CFO or VP of Engineering.

The best part? nOps is an all-in-one solution for all of your cloud optimization needs: automated commitment management, rightsizing, resource scheduling, workload management, Spot usage, storage optimization, and more. Join our customers using nOps to understand your cloud costs and leverage automation with complete confidence by booking a demo today!