Translations of this page:

Amazon SES

—- plugin —-

description: This plugin sends email through Amazon SES using its API. This is for phplist 3.x.
author : Duncan Cameron
compatible : 3.x

sourcerepo :

This plugin sends email through the Amazon SES API. Once you have enabled the plugin then phplist will send all emails (campaigns and system), using the plugin.

To revert to using either the php mail() function or an SMTP server, as specified in the config.php file, you should disable the plugin.

The plugin replaces the core phplist code to send through Amazon SES. It adds the ability to increase the send rate by sending emails concurrently.


See the README file on the GitHub page for how to install the plugin.


Settings page

When you have enabled the plugin there will be a Amazon SES group on the Settings page where you can configure the plugin.

You must enter the AWS access key ID and secret access key values, and select the SES region (as shown on your Amazon SES Account dashboard). If you have previously used the core phplist Amazon SES processing then these are the same values that you have entered in config.php.

Earlier versions of the plugin required you to enter the API endpoint. That is now not needed as the plugin derives the endpoint from the region.

To send emails concurrently you need to enable curl multi and enter the maximum number of emails to send concurrently.

The plugin can create a log file of multi-curl transfers that shows the elapsed time of each transfer. It can also create a log file of each curl transfer to help in debugging. The log files are created in the directory identified by the phplist config variable $tmpdir.

Send rate

The plugin does not control the sending rate, which is done by core phplist as for any other method of sending emails. You should set the throttle, batch size, etc to meet any limit set by Amazon SES.

Bounce handling

For SES to send bounces to phplist the $message_envelope email address must be verified on your SES console

Errors when sending

If the call to the SES API fails then a record is added to the event log, which you can see on the Event Log page.
As an example, this is the event reported when the Access Key ID is invalid

Errors when using curl multi

When using curl multi there is a complication regarding how the plugin reports the sending result status, either successful or unsuccessful, of each email.

To allow the concurrent sending of several emails the plugin reports that the sending was successful, even though that is not yet known. This allows core phplist to continue with the next email to be sent.

The actual completion status will be known only at some point in the future. When the sending of an email completes the plugin adds to the event log if that was unsuccessful. Any error returned by Amazon SES will be included in the event log record.

When using the plugin you should review the event log when phplist has completed sending to see whether there are any errors reported. The plugin also adds to the event log a summary of the successful and unsuccessful attempts to send


Please raise any questions or problems in the user forum