Laravel 5 добавление HTML в электронную почту
В настоящее время я пытаюсь создать электронную почту HTML в Laravel 5, и у меня есть текст (содержащий элементы <br/>
), который я хочу вставить в электронное письмо. Я использую следующий фрагмент кода для отправки электронной почты:
Mail::send(array('html' => 'emails.newinvoice'), array('text' => $emailtext), function($message) use ($email, $subject, $contact_company)
{
$message->to($email, $contact_company)->subject($subject);
});
Таким образом, переменная $emailtext
содержит текст с тегами HTML. В моем макете emails.newinvoice
у меня есть следующее:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head></head>
<body>
<p>{{{ $text }}}</p>
</body>
</html>
При отправке электронной почты вставленный текст в моей почте и элементы HTML в этом тексте отображаются в виде обычных символов, что означает, что мое электронное письмо отображается как:
test<br/>test
Вместо
test
test
Как я могу убедиться, что HTML-теги во вставленном тексте будут отображаться как HTML, а не как обычный текст?
Ответы
Ответ 1
Вам нужно указать ключ html
в первом параметре:
Mail::send( ['html' => 'emails.newinvoice'], ['text' => $emailtext],
// ^^^^
Также замените блок с автоматическим экранированием {{ }}
на неэкранированный {!! !!}
в шаблоне:
<p> {!! $text !!} </p>
Ответ 2
Вам нужно использовать:
{!! $text !!}
вместо
{{ $text }}
Блейд автоматически экранирует любой html при повторном эхом, если вы явно не указали это.