dev-master
9999999-dev https://github.com/tigrov/yii2-mailqueueYii2 mail queue component for yii2-swiftmailer.
MIT
The Requires
by Sergei Tigrov
mail email extension yii2 queue delay
Yii2 mail queue component for yii2-swiftmailer.
Yii2 mail queue component for yii2-symfonymailer., (*1)
Since 1.1.6 requires PHP >= 8.1, (*3)
The preferred way to install this extension is through composer., (*4)
Either run, (*5)
php composer.phar require --prefer-dist tigrov/yii2-mailqueue "~1.1.1"
or add, (*6)
"tigrov/yii2-mailqueue": "~1.1.6"
to the require section of your composer.json
file., (*7)
Once the extension is installed, add following code to your application configuration:, (*8)
return [ // ... 'components' => [ 'mailer' => [ 'class' => 'tigrov\mailqueue\Mailer', 'table' => '{{%mail_queue}}', 'maxAttempts' => 5, 'attemptIntervals' => [0, 'PT10M', 'PT1H', 'PT6H'], 'removeFailed' => true, 'maxPerPeriod' => 10, 'periodSeconds' => 1, ], ], // ... ];
Following properties are available for customizing the mail queue behavior., (*9)
table
name of the database table to store emails added to the queue;maxAttempts
maximum number of sending attempts per email;attemptIntervals
seconds or interval specifications to delay between attempts to send a mail message, see http://php.net/manual/en/dateinterval.construct.php;removeFailed
indicator to remove mail messages which were not sent in maxAttempts
;maxPerPeriod
number of mail messages which could be sent per periodSeconds
;periodSeconds
period in seconds which indicate the time interval for maxPerPeriod
option.Run yii migrate
command in command line:, (*10)
php yii migrate/up --migrationPath=@vendor/tigrov/yii2-mailqueue/src/migrations/
To sending mails from the queue call Yii::$app->mailer->sending()
or run the console command yii mailqueue
which can be triggered by a CRON job:, (*11)
* * * * * php /var/www/vhosts/domain.com/yii mailqueue/sending
After the mail message successfully sent it will be deleted from the queue., (*12)
You can then send a mail to the queue as follows:, (*13)
Yii::$app->mailer->compose('contact/html') ->setFrom('from@domain.com') ->setTo($form->email) ->setSubject($form->subject) ->setTextBody($form->body) ->delay('PT3M') // seconds or an interval specification to delay of sending the mail message, see http://php.net/manual/en/dateinterval.construct.php ->unique('unique key') // a unique key for the mail message, new message with the same key will replace the old one ->queue();
You can still send mails directly with yii2-swiftmailer
:, (*14)
Yii::$app->mailer->compose('contact/html') ->setFrom('from@domain.com') ->setTo($form->email) ->setSubject($form->subject) ->setTextBody($form->body) ->send();
MIT, (*15)
Yii2 mail queue component for yii2-swiftmailer.
MIT
mail email extension yii2 queue delay