Skip to content

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

License

Notifications You must be signed in to change notification settings

kgrruz/codeigniter4-email-queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codeigniter4 email queue

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/

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages