public function actionIndex()
 {
     foreach (Mailer::find()->where(['status' => Mailer::STATUS_NEW])->orderBy(['priority' => SORT_DESC, 'created_at' => SORT_DESC])->asArray()->batch(10) as $mails) {
         foreach ($mails as $mail) {
             try {
                 $status = \Yii::$app->mailer->compose('@templatePath/' . $mail['event'] . '.php', json_decode($mail['params'], true))->setFrom($this->module->from)->setTo($mail['to'])->setSubject($mail['subject'])->send();
                 if ($status) {
                     \Yii::$app->{$this->module->db}->createCommand('update mailer set status = :status, sent_at = :sent_at where id = :id', [':id' => $mail['id'], ':status' => $mail['status'], ':sent_at' => date('Y-m-d H:i:s')])->execute();
                 } else {
                     \Yii::$app->{$this->module->db}->createCommand('update mailer set status = :status where id = :id', [':id' => $mail['id'], ':status' => $mail['status']])->execute();
                 }
             } catch (\Exception $e) {
                 \Yii::$app->{$this->module->db}->createCommand('update mailer set status = :status where id = :id', [':id' => $mail['id'], ':status' => $mail['status']])->execute();
             }
         }
     }
 }
 public function actionIndex()
 {
     $dataProvider = new ActiveDataProvider(['query' => Mailer::find()->orderBy(['priority' => SORT_DESC, 'status' => SORT_ASC, 'created_at' => SORT_DESC]), 'pagination' => ['pageSize' => 20]]);
     return $this->render('index', ['dataProvider' => $dataProvider]);
 }
 public function add($to, $subject, $event, $params, $priority = Mailer::PRIORITY_LOW)
 {
     Mailer::addToQueue($to, $subject, $event, $params, $priority);
 }