Для начала нам необходимо создать файл шаблон письма. Для этого создадим папку для шаблонов: /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(), но Вы можете использовать любой удобный для Вас класс отправки писем.
devreadwrite.com

Подборка адаптивных шаблонов для вашей CMS
Статьи по
Как получить и установить HTTPS сертификат на сайта

Комментарии
Комментарии отсутствуют, Вы можете быть первым