Подтвердить что ты не робот

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, а не как обычный текст?

4b9b3361

Ответ 1

Вам нужно указать ключ html в первом параметре:

Mail::send( ['html' => 'emails.newinvoice'], ['text' => $emailtext], 
//           ^^^^

Также замените блок с автоматическим экранированием {{ }} на неэкранированный {!! !!} в шаблоне:

<p> {!! $text !!} </p>

Ответ 2

Вам нужно использовать:

{!! $text !!}

вместо

{{ $text }}

Блейд автоматически экранирует любой html при повторном эхом, если вы явно не указали это.