Шаблон почты Laravel 5 с тегами HTML - PullRequest
0 голосов
/ 31 мая 2018

У меня есть основной почтовый шаблон (resources / views / mail.blade.php).Это общий шаблон для использования всей моей почты, например, для забытого пароля или для изменения нового пароля.Содержание mail.blade.php ниже:

<table>
<tr><td>SiteName</td>
</tr>
<tr><td>{{$content}}</td></tr>
</table>

Я храню содержимое шаблона электронной почты (в mySql db) через CKEditor, и оно выглядит так:

<p>Dear {{$username}},</p>
<p>This is your new password: {{$newPassword}}</p>

Теперь я использую функцию почты в laravel 5.5, как показано ниже:

$content = str_replace(array('username', 'newPassword'), array($userName, $request->confirm_password), addslashes($emailTemplate->templateBody));

Mail::send(['html' => 'mail'], ['content' => $content], function ($message) use($emailTemplate, $user){
$message->from($emailTemplate->fromEmail, $emailTemplate->fromName);
$message->to($user->email);
});

После отправки электронной почты в mailtrap.io я вижу, что письмо выглядит так:

SiteName
<p>Dear Niladri,</p> <p>This is your new password: 123456</p> 

Обратите внимание, что таблица tr, td, где SiteName записано в mail.blade, работает, и в письме не отображается код HTML.Все в порядке.Но только содержимое CKEditor отображается с тегами HTML (<p></p>).

Я что-то не так сделал?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Используйте {!! $content !!} вместо {{ $content }} Это будет отлично работать. Я столкнулся с той же проблемой.

0 голосов
/ 31 мая 2018

Чтобы использовать содержимое HTML из переменной PHP в файле .blade.php, вам нужно использовать {!! $variable !!} вместо {{ $variable }}.Первый отобразит ваш HTML, второй выведет его в виде строки, включая теги HTML.Ваш mail.blade.php файл должен выглядеть так:

<table>
  <tr>
    <td>SiteName</td>
  </tr>
  <tr>
    <td>{!! $content !!}</td>
  </tr>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...