hakito / cakephp-mailqueue-plugin
Plugin to store mail in a queue for later sendout
Installs: 298
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 3
Forks: 2
Open Issues: 0
Type:cakephp-plugin
Requires
- cakephp/cakephp: ^5.0
Requires (Dev)
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-12-04 22:06:33 UTC
README
CakePHP 5.x plugin to store mail in a queue for later sendout.
When working with emails on a webservice sending email blocks the http request until the email is actually sent out. This can be frustrating for a user especially if the smtp server does not respond promptly.
With this plugin you can save the mail to a local queue file and invoke the actual transport for example with a cron fired cake shell command.
Installation
If you are using composer simply add it with:
composer require hakito/cakephp-mailqueue-plugin
Otherwise download the plugin to app/Plugin/Mailqueue.
Load the plugin in your bootstrap method
$this->addPlugin('MailQueue');
Configuration
Add a transport entry to your app_local.php
'EmailTransport' => [ 'MailQueue' => [ // required 'className' => \MailQueue\Mailer\Transport\QueueTransport::class, 'queueFolder' => TMP . 'mailqueue', // storage location for mailqueue // optional: 'requeue' => [300, 500, 1000] // requeue after x seconds in case of an error ] ], 'Email' => [ 'default' => [ 'transport' => 'MailQueue', ], 'smtp' => [ // configure your real mailer here ] ]
Queue a mail
Send mail to the queue as usually in cake
$mailer = new Mailer('default'); // place your content in $email $mailer->deliver();
Do the real sendout
Use cake shell to do the real sendout. The shell script requires 2 arguments. The first is the name of your queue configuration and the second the name of the config to use for the real sendout.
In your app directory execute:
bin/cake MailQueue SendMail smtp