WP Manifestindependent plugin directory
manifest / email / aws-ses-wp-mail

AWS SES wp_mail drop-in WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA #1 in Email & Notifications

An AWS SES wp_mail() drop-in

★ 189stars
298kcomposer installs
1.4.0latest · 4mo ago

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/humanmade/aws-ses-wp-mail/archive/refs/heads/master.zip

On Packagist as humanmade/aws-ses-wp-mail:

composer require humanmade/aws-ses-wp-mail
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.
AWS SES wp_mail() drop-in
Use AWS SES to send your WordPress emails. Easily.
A Human Made project. Maintained by @joehoyle.

AWS SES is a very simple UI-less plugin for sending wp_mail()s email via AWS SES.

Getting Set Up

Once you have git cloned the repo, or added it as a Git Submodule, add the following constants to your wp-config.php:

define( 'AWS_SES_WP_MAIL_REGION', 'us-east-1' );
define( 'AWS_SES_WP_MAIL_KEY', '' );
define( 'AWS_SES_WP_MAIL_SECRET', '' );
define( 'AWS_SES_WP_MAIL_CONFIG_SET', '' );

If you plan to use IAM instance profiles to protect your AWS credentials on disk you'll need the following configuration instead:

define('AWS_SES_WP_MAIL_REGION', 'us-east-1');
define('AWS_SES_WP_MAIL_USE_INSTANCE_PROFILE', true);

The next thing that you should do is to verify your sending domain for SES. You can do this via the AWS Console, which will allow you to automatically set headers if your DNS is hosted on Route 53. Alternatively, you can get the required DNS records by running:

wp aws-ses verify-sending-domain

Once you have verified your sending domain, you are all good to go!

Note: If you have not used SES in production previously, you need to apply to move out of the Amazon SES sandbox.

Configuration Sets

To better track your mail activity for monitoring or statistics you can use the configuration sets. To enable it you will first need to create your Configuration Set on AWS SES Console and add the configuration set name as the value to the AWS_SES_WP_MAIL_CONFIG_SET constant.

Detailed information on the setup and usage you find here: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-configuration-sets.html

SESv2 and Tenant Isolation

This plugin automatically uses the AWS SESv2 API when Aws\SesV2\SesV2Client is available in the installed SDK (requires aws/aws-sdk-php >= 3.133), falling back to SESv1 for older SDK versions.

To route sends through an SESv2 tenant (for reputation isolation and per-tenant statistics), set the tenant name constant:

define( 'AWS_SES_WP_MAIL_TENANT_NAME', 'your-tenant-name' );

IAM permissions: When using SESv2, your IAM policy must include sesv2:SendEmail in addition to the existing ses:SendEmail action. The policy resources should include your identity ARNs, configuration set ARN, and tenant ARN.

Other Commands

wp aws-ses send <to> <subject> <message> [--from-email=<email>]

Send a test email via the command line. Good for testing!

Credits

Created by Human Made for high volume and large-scale sites. We run AWS SES wp_mail() on sites with millions of monthly page views, and thousands of sites.

Written and maintained by Joe Hoyle. Thanks to all our contributors.

Interested in joining in on the fun? Join us, and become human!

Releases

7 releases.

Tag
Published
1.4.0 latest
Jun 18, 2026 4mo ago
Sep 2, 2025 1 year ago
Nov 15, 2021 4 years ago
Sep 17, 2021 5 years ago
Nov 10, 2020 5 years ago
Sep 13, 2019 7 years ago
Aug 29, 2019 7 years ago

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.

A grade

Security

AWS SES wp_mail drop-in 0.1.1 · audited by WP Registry

No security issues found.

Audited release
0.1.1
Findings
none
Worst severity
—
Content hash
0249177a5b93b24b618dbd9a…

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.