В настоящее время я пытаюсь создать 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
переменная $emailtext
содержит текст с тегами HTML. В моем emails.newinvoice
макета 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, а не как обычный текст?
Вам нужно указать ключ html
в первом параметре:
Mail::send( ['html' => 'emails.newinvoice'], ['text' => $emailtext], // ^^^^
Также замените блок с автоматической блокировкой {{ }}
на unescaped {!! !!}
{!! !!}
в шаблоне:
<p> {!! $text !!} </p>
Вам необходимо использовать:
{!! $text !!}
вместо
{{ $text }}
Blade автоматически ускользает от любого html, если вы его явно не укажете.