This is a integration module between RoaveEmailTemplates
and InteractiveSolutions\ZfBernard
and it allows a very simple method of sending emails in the background.
Simple installation via composer
composer require interactive-solutions/zf-email-in-background
None, it's already handled for you by the module
Assuming you have access to the bernard producer InteractiveSolutions\Bernard\Producer
you simply
want to produce a new message that is an instance of InteractiveSolutions\EmailInBackground\SendEmailMessage
Example
$args = [
'activationKey' => 'helloWorld'
];
$producer->producer(new SendEmailMessage('[email protected]', 'user:registration', $args));
And voila, you have produced a new message that will send an email in a background task
Run this command in a terminal for the application root
php public/index.php interactive-solutions:bernard:consume emails
When running in production you either want a docker container that is running the consume command or have a supervisord process running it.
Example supervisor configuration
[program:emails-in-background]
command=php <path to app root>/public/index.php interactive-solutions:bernard:consume emails
autostart=true
autorestart=true
stderr_logfile=<path to app root>/data/logs/supervisor/emails.err.log
stdout_logfile=<path to app root>/data/logs/supervisor/emails.out.log
user=www-data
group=www-data