WP-SES redirects All outgoing WordPress emails through Amazon Simple Email Service (SES) instead of local wp_mail function.
This ensures high email deliverability, email traffic statistics and a powerful managed infrastructure.

This plugin is functional and I use it on several websites.
WPMU features are so far experimental.

Current features are:

  • Ability to adjust WordPress Default Sender Email and Name
  • Validation of Amazon API Credentials
  • Request confirmation for sender Emails
  • Test message within Amazon Sandbox mode
  • Full integration as seamless replacement for wp_mail internal function
  • Dasboard panel with Quota and statistics
  • Ability to customize return path for delivery failure notifications
  • Custom Reply-To or from Headers
  • Default config values for centralized WPMU setups
  • SES Endpoint selection
  • Mails with attachments (Compatible with Contact Form 7)
  • File logging feature (may be verbose and insecure, do not use as is in production for a long period of time)
  • English, French, Spanish, Serbo-Croatian translations (fell free to send your mo/po files to support more languages)

See full features at http://wp-ses.com/features.html


  • Graphical SES Statistics
  • Full featured Error management
  • Control of sending rate
  • Notice for volume limits
  • Bounce and blacklist management

You can read more about Amazon SES here : http://aws.amazon.com/ses/
This plugin uses a fork of the Amazon Simple Email Service PHP class at http://sourceforge.net/projects/php-aws-ses/


  • the settings screen of WP-SES plugin.


First, install like any other plugin:

  1. Upload and activate the plugin
  2. The setting are in settings / WP SES

Then, proceed to the settings:

  1. Fill the email address and name to use as the sender for all emails
  2. Via the amazon SES console, ask to add the sender email as a confirmed sender
  3. Click on the link you got by email from Amazon SES
  4. Fill in Amazon API credentials and same sender email
  5. Save changes (Important !)
  6. Refresh the plugin, send a test email
  7. If ok, ask Amazon to go out of sandbox into production mode
  8. Once in production mode, you can use the top button to activate the plugin.
  9. From the plugin, you can manage and validate other senders.

Note 1 : If you use an IAM user (recommended) , give it at least the following permissions : ListIdentities, SendEmail, SendRawEmail
To use all features, you’ll also need VerifyEmailIdentity, DeleteIdentity, GetSendQuota, GetSendStatistics

Note 2 : Email validation is per SES Endpoint, not global.


Where can I find support for the plugin ?

Please use our main website http://wp-ses.com/faq.html for all support related questions.

What are the pre-requisites ?
  • A WP3+ Self hosted WordPress Blog
  • PHP5 and Curl PHP extension
  • An Amazon Web Service account
  • Validate your SES service
Can you help me about… (an Amazon concern)

We are not otherwise linked to Amazon or Amazon Services.
Please direct your specific Amazon questions to the Amazon support.

How to setup default values for a WPMU install ?

Please, DO test your setting without this.
Then, when all works as expected, fill in the config file.

Edit the wp-config.php file, and add what you want to define. Here is a complete setup, some defines are optional.

// WP-SES defines

// Amazon Access Key

// Amazon Secret Key

// From mail (optional) must be an amazon SES validated email
// hard coded email, leave empty or comment out to allow custom setting via panel

// Return path for bounced emails (optional)
// hard coded email, leave empty or comment out to allow custom setting via panel

// ReplyTo (optional) – This will get the replies from the recipients.
// hard coded email, or ‘headers’ for using the ‘replyto’ from the headers.
// Leave empty or comment out to allow custom setting via panel

// Hide list of verified emails (optional)

// Hide SES Stats panel (optional)

// Auto activate the plugin for all sites (optional)

When using defines to hardcode your setting, don’t forget to define the SES endpoints, too :

define(‘WP_SES_ENDPOINT’, ’email.us-east-1.amazonaws.com’);
define(‘WP_SES_ENDPOINT’, ’email.us-west-2.amazonaws.com’);
define(‘WP_SES_ENDPOINT’, ’email.eu-west-1.amazonaws.com’);

How to do other actions on mail sent ?

I was asked to add a hook once mail is sent.
Could be used to log emails, or post email info to an API or database.

wpses_mailsent hook is available for that use.

In your code, define a callback function :

function myMailSentHook($to, $subject, $message, $headers, $attachments ) { … }
// params are the same as the wp_mail() function.

// Then add your action :



Setting up Amazon SES with this plugin is as easy as is the difficulty level for setting it up without WP SES.

Thank you for this wonderful plugin.

Works! On site with Postmatic, WP Members, Epoch, Woocommerce

Struggled with various child-theme code additions which did not work. Stumped until I found WP-SES which worked perfectly. Yes you do have to do some fiddling, but if you have set up AWS SES, you are on easy street. I set up a new IAM and input those credentials. Disclosure: I am not any sort of programmer.

Did I mention IT WORKS! Thank you Sylvain Deaure!

Read all 18 reviews

Contributors & Developers

“WP SES” is open source software. The following people have contributed to this plugin.


Translate “WP SES” into your language.

Interested in development?

Browse the code or subscribe to the development log by RSS.



  • Experimental support for cc: and Bcc: in custom header
  • Domain verification is ok


  • Serbo-Croatian Translation by https://webhostinggeeks.com/
  • Fixed Reply-to: extraction Regexp
  • fixes from hbradleyiii https://wordpress.org/support/topic/bug-with-force-plugin-activation-option
  • better handling of custom headers
  • removed ListVerifiedEmailAddresses deprecated api call, now using ListIdentities.
  • added wpses_mailsent hook
  • several minor fixes.


  • Tries to always auto-activate in answer to https://wordpress.org/support/topic/the-plugin-get-inactive-after-a-few-minutes
  • small fixes


  • fixed sender name format
  • fixed regexp for some header recognition
  • now supports comma separated emails in to: header


  • bad ses lib include fixed
  • Added “force plugin activation” for some use case with IAM credentials


  • Warning if Curl not installed
  • Attachments support for use with Contact Form (finally !)
  • Notice fixed


  • Notice fixed, setup documentation slightly tweaked


  • Experimental “WP Better Email” Plugin compatibility


  • Maintenance release – fixes some notices and old code.


  • Maintenance release – fixes some notices.


  • Added Amazon SES Endpoint selection. EU users can now select EU region.


  • Added Spanish translation, thanks to Andrew of webhostinghub.com


  • Auto activation via WP_SES_AUTOACTIVATE define, see FAQ.


  • Tweaked header parsing thanks to bhansson


  • Added Reply-To
  • Added global WPMU setup (To be fully tested)


  • Updated SES access class
  • WP 3.5.1 compatibility
  • Stats sorting
  • Allow Removal of verified e-mail address
  • Added wp_mail filter
  • “Forgotten password” link is now ok.
  • Various bugfixes


Reference Language is now English.
WP SES est fourni avec les textes en Francais.


Added some functions

  • SES Quota display
  • SES Statistics
  • Can set email return_path
  • Full email test form
  • Can partially de-activate plugin for intensive testing.


First public Beta release

  • Functionnal version
  • Internationnal Version
  • fr_FR and en_US locales


  • Proof of concept