Takun
@Takun
Инженер

Как создать оповещение по e-mail?

Собственно использую yii2-swiftmailer, по документации видел пример:
$message = Yii::$app->mailer->compose();
if (Yii::$app->user->isGuest) {
    $message->setFrom('from@domain.com')
} else {
    $message->setFrom(Yii::$app->user->identity->email)
}
$message->setTo(Yii::$app->params['adminEmail'])
    ->setSubject('Message subject')
    ->setTextBody('Plain text content')
    ->send();

Вот код в котором собираюсь использовать его.
public function actionClose($id)
    {
        $model = $this->findModel($id);
        if(Yii::$app->user->identity->id==$model->author_id){
        $model = new StatusTicket();
		$model -> status_id = 6;
		$model -> ticket_id = $id;
        $message = Yii::$app->mailer->compose();
		
        if ($model -> save())
            Yii::$app->session->setFlash('success','<p>Заявка закрыта</p>');

       
            
        return $this->redirect(['view', 'id' => $id]);
        }
        else
            return $this->redirect(['view', 'id' => $id]);
    }


Все не могу понять, как состыковать его с кодом, получается мне после $model_>save нужно выполнять, чтобы оповещение было корректно, будет вывод сообщения и отправка вместе с этим.
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
Форматируйте код. Не забывайте точки с запятой ставить.

if ($model -> save()) {
    $message = Yii::$app->mailer->compose();
    if (Yii::$app->user->isGuest) {
        $message->setFrom('from@domain.com');
    } else {
        $message->setFrom(Yii::$app->user->identity->email);
    }

    $mail = $message->setTo(Yii::$app->params['adminEmail'])
        ->setSubject('Message subject')
        ->setTextBody('Plain text content');

    if ($mail->send()) {
        Yii::$app->session->setFlash('success','<p>Заявка закрыта</p>');
    } else {
        Yii::$app->session->setFlash('error','<p>Ашибка</p>');
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы