Сейчас я реализую функциональность, которая позволяет отправлять системные электронные письма пользователям, зарегистрированным в моем проекте Yii 1.1.
Я начинающий разработчик, поэтому мне все еще нужна подсказка, поэтому у меня есть пара простых вопросов о реализации хранения и извлечения файлов шаблонов электронной почты, которые будут использоваться при отправке системных сообщений (например, с использованием swiftMailer).
Заранее спасибо. Если кто-то может порекомендовать делать вещи по-другому, это также будет высоко ценится.
Электронные письма не отличаются от других типов представлений, только механизм их доставки отличается. Вот где Yii ожидает, что ваши шаблоны будут:
yii/
-- protected/
-- views/
-- mail/
-- template.html
Вы можете указать шаблоны из Yii для ваших писем. Смотрите документацию для YiiMailMessage->setBody
:
/**
* Set the body of this entity, either as a string, or array of view
* variables if a view is set, or as an instance of
* {@link Swift_OutputByteStream}.
*
* @param mixed the body of the message. If a $this->view is set and this
* is a string, this is passed to the view as $body. If $this->view is set
* and this is an array, the array values are passed to the view like in the
* controller render() method
* @param string content type optional. For html, set to 'html/text'
* @param string charset optional
*/
Пример:
$message = new YiiMailMessage;
$message->view = 'main_tpl';
$message->setBody(array(
'data' => $data,
'user' => $user,
));
$message->subject = $subject;
$message->addTo($email);
$message->from = $from;
Yii::app()->mail->send($message);
Это готовит сообщение с yii/protected/views/mail/main_tpl.php
шаблон, и отправляет его вместе с $data
а также $user
чтобы заполнить недостающие части.
Других решений пока нет …