/yii2-mailqueue

Primary LanguagePHPOtherNOASSERTION

Yii Mail Queue

Latest Stable Version Total Downloads Scrutinizer Code QualityCode Climate

Mail queue for emails. You don't need think how many emails will be send, because when you install this extension you can setting this. You will have table, where you can see emails status.

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist yiicod/yii2-mailqueue "*"

or add

"yiicod/yii2-mailqueue": "*"

to the require section of your composer.json.

run

php yii migrate/up --migrationPath=@vendor/yiicod/yii2-mailqueue/migrations

Please note that messages are wrapped with Yii::t() to support message translations, you should define default message source for them if you don't use i18n.

'i18n' => [
    'translations' => [
        '*' => [
            'class' => 'yii\i18n\PhpMessageSource'
        ],
    ],
],

Config

Use pm2(http://pm2.keymetrics.io/) as daemons manager.

'components' => [
    'mailqueue' => [
        'class' => 'yiicod\mailqueue\WorkerCommand',
    ],
]
...
'bootstrap' => array('mailqueue')

Full config you can find in the yiicod\mailqueue\config.

Console command

'commandMap' => [
    'mail-queue' => [
        'class' => 'yiicod\mailqueue\commands\MailQueueCommand',
    ],
],
OR use pm2(http://pm2.keymetrics.io/). This variant more preferable.
'commandMap' => [
    'mail-queue' => [
        'class' => 'yiicod\mailqueue\commands\WorkerCommand',
    ],
],
pm2 config:
    {
      "apps": [
        {
          "name": "job-queue",
          "script": "yii",
          "args": [
            "mailqueue/work"
          ],
          "exec_interpreter": "php",
          "exec_mode": "fork_mode",
          "max_memory_restart": "1G",
          "watch": false,
          "merge_logs": true,
          "out_file": "runtime/logs/job_queue.log",
          "error_file": "runtime/logs/job_queue.log"
        }
      ]
    }
Run PM2 daemons
pm2 start daemons-app.json

Migration usage

Migration command or use manual(http://www.yiiframework.com/doc-2.0/guide-db-migrations.html) for configuration:

   yii migrate --migrationPath=@yiicod/mailqueue/migrations

Push in queue

/**
 * Add mail from queue
 * @param string $to Email to
 * @param string $subject Email subject
 * @param string $body email, html
 * @param string|Array $from From email
 * @param string $attachs Attach for email array('path' => 'file path', 'name' => 'file bname')
 * @param Array $additionalFields Any additional fields
 */
Yii::app()->mailQueue->push($to, $subject, $body, $from = '', array $attachs = [], $additionalFields = []);

or

/**
 * Push mass
 * array(
 *    array(
 *      'field name to' => '',
 *      'field name subject' => '',
 *      'field name body' => '',
 *      'field name priority' => '',
 *      'field name from' => '',
 *      'field name attachs' => '',
 *    )
 * )
 * @param Array $data
 * @return int Return int
 */
Yii::app()->mailQueue->pushMass($data)