Mailer for Silverstripe that supports Mandrill, SMTP, Amazon SES and PHP Mail, with logging and tracking
Send This is another email transport/mailer for Silverstripe, but a bit more comprehensive in it can support different methods of delivery (transports) and has support for web hooks.
It is focused on sending email via API and SMTP, and supports the following methods of transport:
It also has logging and tracking support on the Silverstripe Side, and web hook handling if you are using Mandrill or Amazon SES (all configurable). It will also handle bounces if you are using the SMTP endpoint of Mandrill or Amazon SES if you prefer that route for some reason...
It is inspired by the Laravel Mail Transport by @taylorotwell, but uses the PHPMailer and HTTP/Guzzle libraries
In future hopefully it will integrate with a Silverstripe Queue Module, so you will be able to push mail off to a queue and make the whole process a little bit faster for the end user.
Add the following to your composer.json file
"require" : {
"milkyway-multimedia/ss-send-this": "~0.2"
}
To handle web hooks, events are fired. The namespace events currently being used are (not all web hooks use all these events)
You can use these web hooks to sync your application to the transactional email system.
Events pass four arguments when called: string $messageId, string|array $email, array $params, array $response, $log = null (log is only passed for internal events. For web hooks, you can find the log by message id)
You can subscribe to an event hook by calling
singleton('Milkyway\SS\SendThis\Mailer')->eventful()->listen(['sendthis:sent'], function($messageId = '', $email = '', $params = [], $response = [], $log = '', $headers = null) {});
The second parameter is a callable, so it can be an anonymous function, a callable array, or if you pass an object, it will assume the web hook is mapped to a method with the same name on the object (see _config/listeners.yml for examples)
The following urls will collect web hooks:
By default, this module will use PHP Mail (as per the normal Silverstripe mailer, but implementing PHPMailer). To use the other setups, please read on.
The following options are available for your YAML config.
SendThis:
transport: 'default|smtp|ses|mandrill|sendgrid|mailgun|custom' # the default transport/driver
drivers:
smtp:
params:
host: 'only needed if you are using smtp transport'
port: '' # optional
username: '' # optional
password: '' # optional
secured_with: '' # optional (accepts tls or ssl)
keep_alive: false # optional (true/false)
ses:
params:
key: ''
secret: ''
mandrill:
params:
key: ''
sendgrid:
params:
key: ''
mailgun:
params:
key: ''
logging: true
tracking: false
api_tracking: true (this is slightly different to the above, in that it only uses tracking on the transport rather than CMS based tracking)
from_same_domain_only: false
notify_on_fail: false
blacklist_after_bounced: 2
filter_from_reports: (you can specify some emails that should be filtered from reports in the CMS, such as test emails)
filter_from_logs: (you can specify emails that will completely skip logging when sent to)
headers: (you can specify some default headers that will be sent with all emails as an associative array)
Module rating system helping users find modules that are well supported. For more on how the rating system works visit Module standards
Score not correct? Let us know there is a problem