silverstripe-australia / mailcapture
A module for development/staging systems that capture email within the repository instead of actually sending to a user. These emails can then be browsed within the CMS.
Installs: 5 151
Dependents: 1
Suggesters: 0
Security: 0
Stars: 7
Watchers: 2
Forks: 10
Open Issues: 5
Type:silverstripe-module
Requires
- silverstripe/framework: ~4.0
README
A module for capturing outbound emails in data objects that can then be viewed by users in the CMS directly.
Useful for sites that are in development (or on test/staging servers) where users need to be able to use functionality that sends emails, but it is not desirable to have these emails actually go out to the recipients.
This module defaults to not sending emails, but supports sending via an out bound mailer, this is configured via yml, e.g:
--- Name: mymailcapture after: mailcapture --- SilverStripe\Core\Injector\Injector: SilverStripe\Control\Email\Mailer: class: Symbiote\MailCapture\Control\Email\CaptureMailer properties: # Set to FALSE to enable pass through of emails without logging recordEmails: TRUE # Set to TRUE to send emails, uses the configured SwiftMailer sendMailOutbound: TRUE
Composer Install
composer require symbiote/silverstripe-mailcapture:~2.0
composer require symbiote/silverstripe-mailcapture:~3.0
Requirements
- PHP 7.0+
- SilverStripe 4.0+
Breaking Changes
When upgrading from SilverStripe 3.x to SilverStripe 4.x, the yml file has changed syntax and function. As an example this yml configure would record a copy of each email and use the default Mailer object to send emails over SMTP:
--- Name: mymailcapture after: mailcapture --- Injector: Mailer: class: CaptureMailer properties: outboundMailer: %$MailerObject # Set to false to enable pass through of emails without logging captureEmails: TRUE MailerObject: class: Mailer
The same functionality in the new syntax looks like this:
--- Name: mymailcapture after: mailcapture --- SilverStripe\Core\Injector\Injector: SilverStripe\Control\Email\Mailer: class: Symbiote\MailCapture\Control\Email\CaptureMailer properties: # Set to FALSE to enable pass through of emails without logging recordEmails: TRUE # Set to TRUE to send emails, uses the configured SwiftMailer sendMailOutbound: TRUE
captureEmails
is now recordEmails
this removes the ambiguous capture word making the intent of the setting clearer.
outboundMailer
is no longer used as the CaptureMailer classes instead uses the SwiftMailer transport that is
configured for the site. To enable sending of emails externally we set sendMailOutbound
.