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); }