kgrruz/codeigniter4-email-queue

Queue, preview and and send emails stored in the database

v1.0.2 2022-07-01 23:48 UTC

This package is auto-updated.

Last update: 2024-04-26 13:20:48 UTC


README

Queue, preview and and send emails stored in the database.

This package provides an interface for creating emails on the fly and store them in a queue to be processed later by an offline worker using a Codeigniter4 CLI command.

Requirements

  • Codeigniter 4.x
  • codeigniter4/settings

Installation

composer require kgrruz/codeigniter4-email-queue

run migrations command:

php spark migrate -n EmailQueue

Usage

You must set these configuration in the app/Config/Email.php or set these values using the codeigniter4/settings package before using it:

    setting('Email.fromEmail')
    setting('Email.fromName')
    setting('Email.protocol')

In case of SMTP protocol:

    setting('Email.SMTPHost')
    setting('Email.SMTPPort')
    setting('Email.SMTPUser')
    setting('Email.SMTPPass')
    setting('Email.SMTPCrypto')
    setting('Email.SMTPTimeout')
    setting('Email.SMTPKeepAlive')

Default email settings:

    $config['mailpath'] = '/usr/sbin/sendmail';
    $config['wordWrap'] = true;
    $config['mailType'] = 'html';

Whenever you need to send an email, use the EmailQueue model to create and queue a new one by storing the correct data:

use EmailQueue\EmailQueue;
EmailQueue::enqueue($to, $subject, $attachments, $data);

enqueue method receives 3 arguments:

  • First argument is a string of email addresses that will be treated as recipients.
  • Second argument is an string with the email subject
  • Third argument is an array of files paths
  • Fourth argument is an array of view variables to be passed to the email template
  • message: Email's body text/html

    $data['message'] = "hello world message";

Sending emails

Emails should be sent using bundled Sender command, use -l option to limit the number of emails processed

# php spark emails:send -l 10

You can configure this command to be run under a cron or any other tool you wish to use.

Todo

  • Priority
  • BCC,CC

Contributing

Run the tests

./vendor/bin/phpunit tests/