Amazon Simple Email Service (Amazon SES) is a highly scalable and cost-effective bulk and transactional email sending service for businesses and developers. Amazon SES eliminates the complexity and expense of building an in-house email solution or licensing, installing, and operating a third-party email service for this type of email communication. In addition, the service integrates with other AWS services, making it easy to send emails from applications being hosted on AWS. With Amazon SES there is no long-term commitment, minimum spend or negotiation required — businesses can utilize a free usage tier, and beyond that pay only low fees for the number of emails sent plus data transfer fees.
Any business or developer that needs a reliable, scalable, and inexpensive way to deliver email — without having to build their own solution or license, install, and operate third-party software.
You should send email that recipients are willing to receive, and that comply with applicable laws and regulations, and the AWS Customer Agreement (including the AWS Acceptable Use Policy). Amazon SES can reliably deliver merchandising, subscription, transactional, and notification email messages.
For high email deliverability, Amazon SES uses content filtering technologies to scan a business' outgoing email messages to help ensure that the content meets ISP standards. To help businesses further improve the quality of email communications with their customers, Amazon SES provides a built-in feedback loop, which includes notifications of bounces, failed and successful delivery attempts, and spam complaints.
Amazon SES uses in-house content filtering technologies to scan email content for spam and malware. When such content is detected, Amazon SES prevents these emails from being sent. In exceptional cases, accounts identified as sending spam or other low-quality email may be suspended, or AWS may take such other action as it deems appropriate.
Amazon SES is hosted in the US-East (Northern Virginia) Region but is available for use globally by any software with Internet access. For example, client software running on EC2 in the EU (Ireland) Region can call Amazon SES remotely. Internet data transfer rates will apply for Amazon EC2 instances running outside of the US-East Region. Future support for additional regions is planned in order to reduce latency and data transfer charges.
Amazon SES users do not need to sign up for any other AWS services. Any application with Internet access can use Amazon SES to deliver email, whether that application runs in your own data center, within Amazon EC2, or as a client software solution.
Amazon Simple Email Service (Amazon SES) is for applications that need to send arbitrary communications via email. Amazon SES supports custom email header fields, and many MIME types.
By contrast, Amazon Simple Notification Service (Amazon SNS) is for messaging-oriented applications, with multiple subscribers requesting and receiving "push" notifications of time-critical messages via a choice of transport protocols, including HTTP, Amazon SQS, and email. The body of an Amazon SNS notification is limited to 8192 characters of UTF-8 strings, and is not intended to support multimedia content.
To sign up for Amazon SES, click the "Sign up for Amazon SES" button on the Amazon SES detail page and create your AWS account. After signing up, you can access the Amazon SES sandbox — an environment specifically designed for developers to test and evaluate the service. Sandbox users are restricted to 200 email messages per day. Also, while all users must verify the email addresses or domains they will send from, sandbox users must also verify the email addresses or domains they will send to. The purpose of verification is to confirm that you own these email addresses or domains, and to prevent others from using them. See the Amazon SES Developer Guide for details on verifying email addresses and domains.
Once you are ready to use Amazon SES to send email, you request production access. This will allow you to move from the sandbox environment to the production environment and begin sending email to your customers. You will no longer need to verify recipient email addresses or recipient domains, and you will be able to send much larger quantities of email.
To request production access to Amazon SES, please go to /ses/fullaccessrequest and complete our brief request form. We generally respond to these requests within 24 hours.
Amazon SES will send you an email message to let you know whether your request has been approved. This message will be sent to the email address associated with your AWS account. You can use the Amazon SES console to determine whether your sending quota has increased, and by how much.
You need to do this only once. If you have been granted production access to Amazon SES, then you can send email from anywhere — including any of your Amazon EC2 instances.
Amazon SES users do not need to do this. Amazon Web Services manages the IP addresses used by Amazon SES, and provides reverse DNS records for these addresses.
Amazon SES does not affect any Amazon EC2-based solution that you may currently have. You can continue to use your existing solution, or use Amazon SES, or do both at the same time.
Pay only for what you use. There is no minimum fee. In addition, Amazon EC2 users can get started with Amazon SES for free. You pay only low charges for messages sent, attachments, and data transfer. Please refer to the Amazon SES detail page for more information on pricing, data transfer costs, and free usage.
There are no set-up fees to begin using the service. At the end of the month, you will be charged for that month's usage. You can view your charges for the current billing period at any time on the Amazon Web Services web site by logging into your Amazon Web Services account and clicking "Account Activity" under "Your Web Services Account."
Your Amazon SES billing cycle begins on the first day of each month and ends on the last day of each month. Your monthly charges will be totaled at the end of each month.
To benefit from Amazon SES free tier pricing, you need to call Amazon SES from within Amazon EC2 or AWS Elastic Beanstalk. If you do this, then your AWS bill will reflect your free tier usage: You can send up to 2,000 messages for free each day. (Note: Data transfer fees still apply.)
Yes. If you are in the Amazon SES sandbox, you can send up to 200 messages for free each day, from Amazon EC2 or AWS Elastic Beanstalk, to any of your verified email addresses or domains. However, to take full advantage of the Amazon SES free tier, you will need to request production access; this will allow you to send up to 2,000 free messages per day from Amazon EC2 or AWS Elastic Beanstalk, to any email address. (Note: Data transfer and attachment fees still apply.)
You can track your usage on your AWS Account Activity page.
Yes. Amazon SES provides a full-featured SMTP interface for seamless integration with applications that can send email via SMTP. You can connect directly to this SMTP interface from your applications, or configure your existing email server to use this interface as an SMTP relay.
To connect to the Amazon SES SMTP interface, you must create SMTP credentials. To create your credentials, go to the AWS Management Console and click the SMTP link.
To use the Amazon SES SMTP interface, all you need are your SMTP username and password, the SMTP endpoint name, and the port number. Using this information, you can connect to the Amazon SES SMTP interface in the same manner as any other SMTP relay.
For example, you can integrate your existing packaged software so that it sends email through Amazon SES. You can add email sending capability to your applications, using a programming language that supports SMTP. You can integrate Amazon SES sending with popular mail transfer agents (MTAs) such as Sendmail, Postfix, and Exim. You can even connect to the SMTP interface from the command line, and send SMTP commands directly.
For more information about the SMTP interface, go to the Amazon SES Developer Guide.
In addition to SMTP sending support, Amazon SES provides the following APIs: SendEmail and SendRawEmail. These two APIs provide different levels of control over composition of the actual email message. Both APIs provide the same level of email sending reliability and performance:
The SendEmail API requires the user to provide only a source address, destination address, message subject, and message body. Upon calling this API, Amazon SES will automatically construct and send a properly formatted multi-part MIME email message optimized for display by email client software.
The SendRawEmail API provides the advanced user with flexibility to format and send their own raw email message by specifying headers, MIME parts, and content types.
Yes. Simply call the SendEmail or SendRawEmail APIs repeatedly for each email you would like to send. Software running on Amazon EC2, Amazon Elastic MapReduce, or your own servers can compose and deliver bulk emails via Amazon SES in whatever way best suits your business. If you already have your own bulk mailing software, it's easy to update it to deliver through Amazon SES — either by modifying the software to directly call Amazon SES, or reconfiguring it to deliver email through an Amazon SES SMTP relay as described above.
Yes. Amazon SES supports many popular content formats, including documents, images, audio, and video.
You can send email with attachments by using an email client that supports SMTP. When you configure such a client to send outgoing email through Amazon SES, the client constructs the appropriate MIME parts and email headers before sending the message. All of this happens automatically in your client with no additional user intervention.
You can also send email with attachments programmatically. To include an attachment, construct a multipart email message. In this message, include a MIME part that contains an appropriate Content-Type header, along with the MIME-encoded content. Next, use the Content-Disposition header to specify whether the content is to be displayed inline or treated as an attachment.
Once you have constructed your message, you can send it using the SendRawEmail API; you can also use the AWS Software Development Kits (SDKs) for Java, .NET, and PHP, or a third party library such as boto for Python.
To learn more about attachment pricing for Amazon SES, please see pricing. For more information, including SMTP configuration and the MIME types that are supported by Amazon SES, go to the Amazon SES Developer Guide.
The SMTP protocol requires that all data be sent in 7-bit ASCII format. If you want to use a different character encoding with the Amazon SES SMTP interface, you will need to apply your desired encoding to your subject and body, and then convert them to a valid 7-bit ASCII message before sending it to the SMTP endpoint.
The SendEmail API accepts UTF-8 subject and body inputs, transcodes them into whatever format you specify via an optional encoding parameter, and automatically converts the resulting content into 7-bit ASCII with appropriate encoded-word syntax and content-transfer-encoding headers before transmission. The SendRawEmail API requires you to apply your desired encoding to your subject and body and then convert them to a valid 7-bit ASCII message before submitting each request.
If Amazon SES determines that it is unable to deliver your message it will return an error specifying that delivery failed and providing the reason. In rare cases, Amazon SES may not detect the problem with your email until after accepting your request. In such cases, your email will be returned to you as a bounce with a corresponding error code and reason.
Yes. Amazon SES helps enable your emails to pass SPF and Sender ID policy checks enforced by many ISPs. We recommend that all Amazon SES users publish SPF and Sender ID records authorizing Amazon SES to send from their domains. For more information on configuring SPF and Sender ID, go to the Amazon SES Developer Guide.
Yes. Amazon SES will DKIM-sign outgoing messages on your behalf if you have Easy DKIM configured and enabled. For more information on how to configure Easy DKIM and other DKIM topics, go to the Amazon SES Developer Guide.
If you wish, you can also DKIM-sign your email yourself. To ensure maximum deliverability, there are a few DKIM headers that you should not sign. For more information, go to the Amazon SES Developer Guide.
Yes. The Amazon SES Mailbox Simulator provides an easy way to test your sending rate and generic email responses, including bounces and complaints, without sending to actual recipients. Emails to the mailbox simulator do not affect your bounce and complaint metrics, and do not count against your sending quota.
For more information about the Amazon SES mailbox simulator, go to the Amazon SES Developer Guide.
Generally, Amazon SES will deliver emails to the Internet within a few seconds of each request. After that, however, it is not possible to predict with any certainty when your email will arrive due to the inherent uncertainties of the Internet. We cannot guarantee which ISP(s) will deliver your message, nor the exact route the message will take to get to its destination.
In certain circumstances, bulk senders calling the SendEmail and SendRawEmail more than a few hundred times per second may experience delayed delivery times due to queuing of their emails. If you have specific performance requirements for how quickly your bulk email must be sent, please contact AWS so that we can understand your use case.
Amazon SES closely monitors ISP guidelines worldwide to help ensure that legitimate, good quality email will be delivered reliably to recipient inboxes. However, neither Amazon SES nor any other email-sending service can guarantee that emails will be received. ISPs can drop or lose email messages, recipients can accidentally provide the wrong email address, and if recipients do not wish to receive your email messages, ISPs may choose to reject or silently drop them.
Yes. You can use the AWS Software Development Kits (SDKs) for Android, iOS, Java, .NET, Node.js, PHP, Python, and Ruby to access the Amazon SES API. These SDKs make it easy to email-enable your applications, allowing them to send email with a simple API call.
Python support for Amazon SES is provided by the boto package. For more information, go to https://github.com/boto/boto.
Yes. The AWS SDK for Ruby features support for SES.
Amazon SES accepts Query requests over HTTPS. These requests use verbs such as GET or POST, and a parameter named Action to indicate the action being performed. For security reasons, Amazon SES does not support HTTP requests; you must use HTTPS instead.
Yes. For example, if you know the email address associated with a mobile phone, you can use Amazon SES to send an email message to an SMS gateway, and the message will be delivered to the phone.
Yes. The Amazon SES Developer Guide provides instructions for configuring common mail transfer agents (MTAs) to use Amazon SES as an email transport. By following these instructions, you can create a private SMTP relay for use with any existing SMTP client software. This includes any software that you write, or any third-party software that supports SMTP, such as content management and database management systems.
If you send an email message that results in a bounce or a complaint, the intended recipient's mail server or ISP will send a notification message to Amazon SES. When this happens, Amazon SES rewrites the From: header and forwards the notification to you or passes it to an Amazon Simple Notification Service (Amazon SNS) topic, depending on your configuration.
Yes. By default, you will receive bounce and complaint notifications via email. You can only disable receiving feedback notifications via email for a verified domain or email address if you have Amazon SNS topics configured for both bounce and complaint notifications.
You can choose how to receive bounce and complaint notifications. By default, you will receive bounce and complaint notifications via email. However, you can configure Amazon SES to send notifications for bounces and/or complaints via Amazon SNS as JSON objects. You can use Amazon SNS for your feedback notifications either in addition to or instead of email notifications.
If you choose to receive bounce and complaint notifications via email, Amazon SES will send you your bounce and complaint notifications based on the following logic:
If you used the SMTP interface to send the message, then notifications go to the address specified in SMTP's required MAIL FROM command, which overrides any Return-Path: header specified in the SMTP DATA.
If you used the SendEmail API action to send the message, then:
If you used the SendRawEmail API action to send the message, then:
You will need to analyze each feedback message or JSON object that you receive to determine the cause. Bounces are usually caused by attempting to send to a nonexistent recipient; complaints arise when the recipient indicates that they do not want to receive your message. In either case, we recommend that you stop sending to these email addresses.
You will incur normal Amazon SNS expenses if you use it for bounce and complaint notifications. Please see the Amazon SNS Pricing Page for information about their free tier and full details about their pricing.
After an ISP sends a bounce or complaint to Amazon SES, we will usually pass it to you within a few seconds via Amazon SNS or email. However, we may not receive the bounce or complaint notification from the recipient’s ISP for a period of time ranging from seconds to weeks or longer, depending on how quickly the ISP notifies us.
Even if other Amazon SES users cause bounces or complaints, your ability to send email should remain unchanged.
There is one exception. Whenever a recipient address generates a hard bounce for any Amazon SES user, Amazon SES considers that address to be invalid, and adds the address to the Amazon SES suppression list. In the next 14 days, any email sent by any Amazon SES user to that address is treated like a hard bounce. Like any hard bounce, suppression list bounces count towards your sending quota and your bounce rate. For details, go to the Amazon SES Developer Guide.
You can submit a suppression list removal request using the Amazon SES console. For details, go to the Amazon SES Developer Guide.
As described in the AWS Customer Agreement (including the AWS Acceptable Use Policy), each user is responsible for remaining compliant with applicable laws and regulations. Further, each user is responsible for sending only email that recipients want or expect to receive. AWS may suspend any accounts identified as sending spam or other unwanted low-quality email, or take other action as AWS deems appropriate.
Yes. After you have received production access to SES, you can specify any "From" address in the email messages that you send using Amazon SES. However, to prevent phishing, you must demonstrate your ownership and control of each email address or domain that you use; otherwise, your email will not be accepted for delivery. You can verify ownership and control of email addresses and domains by using either the Amazon SES console or the Amazon SES API. For details on address verification and domain verification, see the Amazon SES Developer Guide.
You can verify a total of up to 1000 email addresses and domains, in any combination.
Amazon SES will accept email messages up to 10 MB in size. This includes any attachments that are part of the message.
Amazon SES lets you specify a maximum of 50 recipients for every message you send. In other words, the combined number of To:, CC: and Bcc: recipients must not exceed 50. If you need to send an email message to more than 50 recipients, then you need to send multiple messages, each addressed to 50 recipients or fewer.
Every Amazon SES sender has a unique set of sending limits, which are calculated by Amazon SES on an ongoing basis:
New Amazon SES users who have received production access can send up to 10,000 emails per 24-hour period, at a maximum rate of 5 emails per second. Amazon SES automatically adjusts these limits upward, as long as you send high-quality email. You can also submit an Extended Access Request at /ses/extendedaccessrequest.
You can check your sending limits at any time by using the Amazon SES console.
Note: If your email is detected to be of poor or questionable quality (e.g., high complaint rates, high bounce rates, spam, or abusive content), Amazon SES might temporarily or permanently reduce your permitted send volume, or take other action as AWS deems appropriate.
Using these limits to steadily "ramp up" your sending activity helps you improve your deliverability. This approach helps Amazon SES adapt to your particular sending needs. As you continue to send high-quality email, Amazon SES adjusts to your particular usage patterns, and gradually increases your sending limits.
Use the Amazon SES console to proactively identify and monitor your sending activity. The console displays the number of emails you've sent, the maximum number of emails you can currently send per 24-hour period, and the per-second rate at which you can send them.
The Amazon SES console also lets you view the number of bounces, complaints, and emails rejected due to spam filtering events. The data is aggregated over the past two weeks, and is divided into 15-minute intervals. If these numbers are increasing, they can signify problems with the quality of your email. In the case of a dramatic decline in quality, Amazon SES may be forced to suspend sending your emails without prior notice, or take other action as AWS deems appropriate.
We take our privacy and data protection responsibilities very seriously. Amazon SES uses in-house anti-spam/anti-virus technologies to filter email messages containing poor-quality content and prevent them from being sent. We will only access email content under very limited circumstances, such as system troubleshooting, or investigating fraudulent or abusive activity. Furthermore, other Amazon SES customers do not have access to your email content.