AWS Simple Email Service (SES) sends email for Netflix, Reddit and Duolingo, at $0.10 per 1,000 emails. Getting started takes six steps: an AWS account, a region, a verified domain, production access, bounce handling, and a way to send.
1. An AWS account.
Sign up at aws.amazon.com. New accounts get up to $200 in AWS Free Tier credits for their first 6 months, which SES can use.
Use an email address you read
AWS sends every SES review and pause notice to the email address of your AWS account. If that inbox is unread, the first you hear of a problem is your email stopping. See bounce and complaint rates.
2. Choose one region and stay there.
SES runs separately in each AWS region. Your verified domains, your sandbox status and your sending limits all belong to one region. A domain verified in Mumbai is unknown in Ohio.
Choose the region nearest your customers, or the one your other AWS services already use, and do every step below in that region. The region picker is at the top right of the AWS console.
3. Verify your domain.
In the SES console, go to Identities and choose Create identity, then Domain. SES gives you DNS records to add: 3 DKIM records, plus a DMARC record and SPF on a mail. subdomain that you add yourself.
Every record, where it goes, and the mistakes that cost people days: SPF, DKIM and DMARC for AWS SES.
Domain, not just an email address
SES can also verify a single email address, but mail from a verified domain with DKIM is what Gmail and Yahoo expect, and what AWS approves faster.
4. Ask AWS for production access.
Every new SES account starts in the sandbox: only addresses you have verified, at most 200 emails in 24 hours, 1 email a second. To send to anyone, ask AWS to move you out. AWS answers within 24 hours.
The form asks what you send and for your website. Have a real website that shows what your business does, and describe your sending honestly. Step by step: Get AWS SES production access.
5. Handle bounces and complaints.
SES does not clean your list for you. Set up a configuration set that sends bounce and complaint events to Amazon SNS, then remove every address that hard bounces or complains, at once and for good.
This is the step people skip, and the one AWS watches most closely: a 5% bounce rate puts your account under review. Details: AWS SES bounce and complaint rates.
6. Send.
The SES console
For a test only: open your verified domain and choose Send test email.
The API
From your own code, through an AWS SDK. Your code needs an IAM user or role allowed to send through SES.
SMTP
For apps and plugins that speak SMTP. In the SES console, open SMTP settings and choose Create SMTP credentials. The server is email-smtp.<region>.amazonaws.com, port 587.
One thing SES leaves out: a screen. It has no contact lists to browse, no email designer and no campaign reports. You build those, or use a tool on top of SES.
