Setting up Your Domain Email on WordPress with Amazon SES

If you want to send emails from your own domain, Amazon SES is a preferred solution especially you are running a business site. Despite it is not free, the cost is cheap. AWS charges $0.10 every 1000 emails and $0.12 each GB of data.

Amazon SES

Excepting sending emails from your own domain (Need to verify your domain), Amason SES also allows you to send emails using your own email addresses (Need to verify your email). If you just want to send emails using your own email (such as john@gmail.com) on your WordPress site, skip the step 2 in below procedure.

For receiving emails, AWS SES does not provide an email inbox, but it can deliver incoming emails to an Amazon S3 bucket (it will be charged), publish it to an Amazon SNS topic, or operate an AWS Lambda operation, etc.

If that is not what you want to do with receiving emails, you can forward the received emails to your another email address through your domain provider. Many domain providers give free email forwarding service. The only thing you need to do is add a MX record in your DNS zone.

Below section shows an overall process and explains each step. Refer to Enabling email for your wordpress on AWS Lightsail for stey-by-step instructions. Although it’s about WordPress on AWS Lightsail, the guide applies to all WordPress sites no mater your site is on Amazon Lightsail or not. There are differences just when it comes to setting DNS records part. Skip the first two steps in the guide and start from step 3 (It is marked as step 1 in the following procedure).

Steps to set up your own domain Email on WordPress

Step 1: Create SMTP credentials in Amazon SES

Creating SMTP credentials in your Amazon SES will create a SMTP user and password. This credential will be used when you configure WordPress to send emails using Amazon SES.

Step 2: Verify your domain in Amazon SES

This step confirms that you own the domain, prevents others from using it and enables you send emails from your domain.

In the step, you need to add several DNS records to your domain’s DNS . After that, in fact you have been able to send emails from your domain.

However, your AWS account is in the Amazon SES sandbox for the moment, this will restrict you to send emails only to verified addresses or domains (In step 5, you can make a request to move it out of the sandbox so you can send emails to any address). Therefore in the next step, you can verify an email so that you can send an email to that address to make sure everything is working.

Step 3: Verify your email address in Amazon SES

You can verify you own existing email address, such as john@gmail.com.

After you finish this step, then send a test email from the domain to this email:

  1. Open AWS SES Console .

  2. Choose Domains.

  3. Check the checkbox for the domain you have verified in the table.

  4. Choose Send a Test Email button on the top.

  5. Enter an email address from your domain. Assuming that your domain is example.com, you can use hello@example.com as the sender address. You can enter an arbitrary user name here, it has nothing to do with the actual users on your web site.

    Then enter the mail address you’ve verified in the prior step as the recipient. Choose Send Test Email button.

Note this step enables you to send emails using the verified email address with Amazon SES. You can send a test email using it in Amazon SES just like what you do using the verified domain.

Step 4: Configure WP Mail SMTP plugin to send emails on WordPress using Amazon SES

In this step, the credentials information created in step 1 will be used. When you finish the configure, you will be able to send emails on your WordPress site.

Step 5: Move your Amazon AWS account out of the Amazon SES sandbox

See Moving Out of the Amazon SES Sandbox for how to make a request to move your Amazon SES account out of the sandbox.

In the request, choose all of the AWS regions that your request applies to (see more on Amazon SES Regions).

After your request is passed, you can send emails from your domain to any address.