dev-master
9999999-dev https://github.com/xeois/yii2-mailqueueEmail queue component for yii2 that works with yii2-swiftmailer.
MIT
The Requires
by XeoIS
component email extension yii2 swiftmailer queue yii2-swiftmailer
Wallogit.com
2017 © Pedro Peláez
Email queue component for yii2 that works with yii2-swiftmailer.
Email queue component for yii2 that works with yii2-swiftmailer, (*1)
The preferred way to install this extension is through composer., (*2)
Either run, (*3)
php composer.phar require --prefer-dist xeois/yii2-mailqueue "*"
or add, (*4)
"xeois/yii2-mailqueue": "*"
to the require section of your composer.json file., (*5)
Once the extension is installed, add following code to your application configuration :, (*6)
return [
//....
'components' => [
'mailqueue' => [
'class' => 'xeois\mailqueue\MailQueue',
'table' => '{{%mail_queue}}',
'mailsPerRound' => 10,
'maxAttempts' => 3,
],
],
];
Following properties are available for customizing the mail queue behavior., (*7)
table: Name of the database table to store emails added to the queue.mailsPerRound: Number of emails to send at a time.maxAttempts: Maximum number of sending attempts per email.Apply the database migration to create the table required to store the mail queue messages. To do this,
add following code to /config/console.php:, (*8)
return [
//....
'components' => [
'mailqueue' => [
'class' => 'xeois\mailqueue\MailQueue',
'table' => '{{%mail_queue}}',
],
],
];
then run yii migrate command in command line:, (*9)
php yii migrate/up --migrationPath=@vendor/xeois/yii2-mailqueue/migrations/
Now calling process() on Yii::$app->mailqueue will process the message queue and send out the emails.
In one of your controller actions:, (*10)
public function actionSend() { Yii::$app->mailqueue->process(); }
Most preferably this could be a console command (eg: mail/send) which can be triggered by a CRON job., (*11)
Set a CRON job to run console command:, (*12)
*/10 * * * * php /var/www/html/myapp/yii mailqueue/process
You can then send an email to the queue as follows:, (*13)
Yii::$app->mailqueue->compose('contact/html')
->setFrom('from@domain.com')
->setTo($form->email)
->setSubject($form->subject)
->setTextBody($form->body)
->queue();
While xeois\mailqueue\MailQueue extends from yii\swiftmailer\Mailer, you can replace it with this extension by adding
yii2-swiftmailer configuations directly to mailqueue configurations as follows:, (*14)
return [
//....
'components' => [
'mailqueue' => [
'class' => 'xeois\mailqueue\MailQueue',
'table' => '{{%mail_queue}}',
'mailsPerRound' => 10,
'maxAttempts' => 3,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'localhost',
'username' => 'username',
'password' => 'password',
'port' => '587',
'encryption' => 'tls',
],
],
],
];
And use following code for directly sending emails as you ususally do with yii2-swiftmailer and also add to db for reference:, (*15)
Yii::$app->mailqueue->compose('contact/html')
->setFrom('from@domain.com')
->setTo($form->email)
->setSubject($form->subject)
->setTextBody($form->body)
->send();
MIT, (*16)
enhance version of nterms/yii2-mailque to send and queue. Email queue component for yii2 that works with yii2-swiftmailer., (*17)
Email queue component for yii2 that works with yii2-swiftmailer.
MIT
component email extension yii2 swiftmailer queue yii2-swiftmailer