URL endpoint for recording bounce emails in the SilverStripe database
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
code Converted to PSR-2 Dec 17, 2015
.editorconfig Added standard .editorconfig file Dec 31, 2015
LICENSE Initial commit (migrated from core) Dec 2, 2012
_config.php BounceHandlerMemberExtension Dec 3, 2012
code-of-conduct.md Added standard code of conduct file Feb 15, 2016
composer.json Fixed composer constraint to allow for RC releases (composer fixed it… Aug 14, 2013


This is an archived project and is no longer supported or updated by SilverStripe. Please do not file issues or pull-requests against this repo. If you wish to continue to develop this code yourself, we recommend you fork it or contact the maintainers directly (check latest commits for email addresses).

SilverStripe Email Bounce Handling Module


Email bounce handling for SilverStripe CMS, implemented through callbacks in the mail server for incoming mail.

Caution: This functionality has been migrated from SilverStripe core in 2012, but hasn't been actively used or maintained in a while. It should be regarded as a starting point rather than a complete solution. In general, we recommend using third party email SaaS solutions if you care about bounce tracking and management.

If the newsletter module is installed, the bounce tracking can also identify the Member record and newsletter which this email related to, and track the data more specifically.


First of all, define a unique EMAIL_BOUNCEHANDLER_KEY constant, in order to secure the tracking against unverified use. Change the value in _config.php, or define your own one earlier on.

You need to let your mailserver know where to forward bounced emails to. In the Exim mailserver, this is called the "pipe transport". The configuration setting will look roughly like the following example:

| php -q /your/path/framework/cli-script.php /Email_BounceHandler

Please ensure that the From: or Reply-To: address in the emails you send matches the one address being configured in the mailserver.


You can send an email through SilverStripe as usual, no special flags are needed.

$email = new Email();
	->setSubject('Test Email')

Bounces will be recorded as new Email_BounceRecord database entries, as well as tracked in the Member->Bounced property.

Alternatively, you can define a BOUNCE_EMAIL constant to set up a global bounce address for all emails sent through SilverStripe's Email class.