Тело электронной почты в почтовой программе Symfony 1.4?
Я использую почтовую программу Symfony 1.4, где собираю различные биты, необходимые для письма, а затем отправляю его, используя:
$this->getMailer()->composeAndSend($sender, $recipient, $subject, $body);
В теле письма мне нужно иметь возможность использовать переменные, сгенерированные в действии, поэтому сейчас я могу иметь это в своем действии:
$body = 'Your username is '.$username.' and this is the email body.';
Кто-нибудь знает об элегантном способе хранения / организации различных тел электронной почты вместо того, чтобы кодировать их прямо в моем действии? У меня будет много шаблонов электронной почты, а также на нескольких языках.
Я нашел старое руководство по Askeet, обсуждающее это, но оно кажется несколько устаревшим с новой интеграцией Symfony 1.4 в SwiftMailer, и сама документация SwiftMailer не очень ясна по этому поводу.
Спасибо.
2 ответа
Я сохраняю тела сообщений в виде файла шаблона и отображаю их sfPartialView
, Например, внутри действия:
$view = new sfPartialView($this->getContext(), $this->getModuleName(), $this->getActionName(), 'confirmation_mail');
$view->setTemplate('_confirmation_mail.php');
// values can be set e.g. by setAttibute
$view->setAttribute('name', $name);
$body = $view->render()
Шаблоны тела находятся в папке шаблонов модуля, но я уверен, что вы можете как-то изменить это и, например, положить все шаблоны электронной почты в одну папку, если хотите.
Как насчет использования нативного метода, доступного внутри sfAction.
$ This->getPartial('partial_name'); который работает как частичные помощники для ваших шаблонов.