Table of Contents
Introduction
The question of how to send email from applications when a customer moves to the cloud is a common one. As a result, I’ve covered this topic in several posts. I have implemented SendGrid for some customers, but recently I was looking for a better alternative. I think Amazon Simple Email Service (SES) has some advantages over other services, especially for smaller companies. So here is a guide that covers the most important topics and I will show you how to set up the service.
The service
Amazon Simple Email Service is a cost-effective way to send marketing or transactional emails. You only pay for what you use. You can use either the API or the SMTP relay service to send email.
An advantage of the service is that you can choose in which region your Simple Email Service will be hosted. Here you can choose a German region like Frankfurt am Main. This is different from other services like SendGrid where the servers are hosted in america or Mailjet where the servers are hosted in france. if you need to comply with regulatory requirements like hosting the service in german datacenters then this is a service to look into.
Pricing
Amazon Simple Email Service Pricing | Cloud Email Service | Amazon Web Services
Create estimate: Configure Amazon Simple Email Service (SES) (calculator.aws)
For the first year you will receive 3,000 emails per month for free. After that, the following pricing applies:

This distinguishes the AWS service from other providers, where you usually have a free tier that you can use to set up the service, but after that you have to pay about 20-30€ per month to get a usable service. So the AWS service is especially cheaper for small businesses, but also if you are a big company sending thousands of emails:
Amazon SES | Twilio SendGrid | Mailjet | |
1000 mails per month (3MB each) | 0,46 $ | 19,95 $ | 17$ |
300.000 mails per month (3MB each) | 135 $ | 249 $ | 250 $ |
Setup Amazon Simple Email Service
First select the region in which you want to deploy the service – in my case, I select Frankfurt am Main:

Then select the service you want to deploy – just type “ses” and it will display the service:

Click on “get started” to set up the service:

First, you need to enter an address to verify. This should be an address from the domain you want to verify:

Now you need to add your sending domain. For better deliverability, the service recommends defining a mail from domain that is a subdomain of your primary domain. In my case, I choose “mail” as subdomain. In case of an MX error, we choose to reject the message:

The virtual deliverability manager is a paid add-on service that we do not need:

You get the final overview and are ready to “get started”:

You will receive an email at the address you entered with a link to verify your request. Your address will then be verified:

Now you need to set up your sending domain, so go to the Amazon SES service and click on “Get DNS Records”:

You will see a list of the required DNS records that you need to set up:

Once you have set up all the DNS records, the window will automatically disappear and the task will be marked as completed:

Since the account is currently in the sandbox state, we need to request production access to remove the restrictions that are currently in place:

You must choose whether you want to send marketing or transactional emails and provide a link to your homepage:

The request is under review and will hopefully be approved within the next 24 hours:

You will receive an email requesting some additional information about your use case.

I have received an NDR in response to this message. So please go to the Support Center and reply to the case here:

After a few days, my request is approved and my service is moved from the sandbox to the production environment:

Send an E-Mail
It is important to set up the intended recipient as a verified identity while you are still in sandbox mode with your service. You set up the identity and verify it by clicking on a link in the email you receive:

You can send a test E-Mail directly from the portal:


The other option is to create an SMTP user and send an email via SMTP:

You will get a randomly generated username, which is fine for me, so just click “Create User”:

You will see a summary of the credentials you created that you need to obtain. Store the credentials in a secure location. You can use the same credentials when you move the service into production:

You can then use this PowerShell script to send an e-mail, for example:
#send via SMTP # Define username and password $smtpUserName = '<username>' $smtpPassword = ConvertTo-SecureString '<password>' -AsPlainText -Force # Convert to SecureString [pscredential]$credential = New-Object System.Management.Automation.PSCredential ($smtpUserName, $smtpPassword) # Send Email - change the values if needed. Send-MailMessage -Credential $credential ` -useSSL ` -smtpServer 'email-smtp.eu-central-1.amazonaws.com' ` -port 587 ` -from '[email protected]' ` -to '[email protected]' ` -subject 'Email via Amazon SES SMTP Endpoint' ` -body 'Email via Amazon SES SMTP Endpoint'
The smtp server details can be found here:

In my case, the email was successfully delivered and met all of my defined DMARC requirements:

Conclusion
Amazon Simple Email Service is as easy to set up as the other services, but it has the advantage of a flexible pricing model and the ability to host the service in any region you want. I thought about checking out Microsoft’s High Volume Email Service as well, but Tony Redmond’s review of the service showed me that the service is still not working properly and has some serious limitations that I don’t want in a service like this.
I hope you enjoyed this article!