Для начала нам необходимо создать файл шаблон письма. Для этого создадим папку для шаблонов: /themes/themeName/views/templateMail/
и в ней файл view test.php
. В файл добавим код шаблона, например:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Тестовое письмо</title> <style type="text/css"> /* стили для письма */ </style> </head> <body> <p>Здесь все необходимые блоки и текст.</p> <p>Также в письмо мы можем передать переменные, например имя пользователя:</p> <p>Здравствуйте, <?php echo $userName; ?></p> <p>И еще одна переменная <b><?php echo $addVal; ?></b></p> </body> </html>
Далее у нас есть два варианта отправки этого шаблона. Из контроллера или из модели.
Отправка письма из контроллера
Контроллер:
<?php class MailTestController extends Controller { //... public function actionSendTestMail() { if ($this->sendTestMail()) { //данные отправлены } else { //ошибка при отправлении } } protected function sendTestMail() { $to= "user.email@example.com"; $subject = "=?UTF-8?B?" . base64_encode("Тестовое письмо") . "?="; //используем view как тело сообщения $message = $this->renderPartial("//templateMail/test", array( "userName" => "User", "addVal" => "Дополнительная важная информация"), true); $headers= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=utf-8\r\n"; $headers .= "From: robot <robot@example.com>\r\n"; return mail($to, $subject, $message, $headers); } //... }
Модель:
<?php class TestModel extends CActiveRecord { //... public function sendTestMail() { $to= "user.email@example.com"; $subject = "=?UTF-8?B?" . base64_encode("Тестовое письмо") . "?="; //используем view как тело сообщения $message = Yii::app()->controller->renderPartial("//templateMail/test", array( "userName" => "User", "addVal" => "Дополнительная важная информация"), true); $headers= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=utf-8\r\n"; $headers .= "From: robot <robot@example.com>\r\n"; return mail($to, $subject, $message, $headers); } //... }
Вызов в контроллере:
<?php class MailTestController extends Controller { //... public function actionSendTestMail() { $send = TestModel->model()->sendTestMail(); /* * //или вызов можно сделать так: * $model = new TestModel(); * * //работа с моделью * * $send = $model->sendTestMail(); */ if ($send) { //данные отправлены } else { //ошибка при отправлении } } //... }
Информация! В примере использовалась стандартная функция php mail(), но Вы можете использовать любой удобный для Вас класс отправки писем.
Комментарии
Комментарии отсутствуют, Вы можете быть первым