Skip to content

hakito/CakePHP-Mailqueue-Plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CakePHP-Mailqueue-Plugin

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

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

About

Plugin to store mail in a queue for later sendout

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages