Laravel 5 Mail模板显示html标签

Nil*_*ara 5 laravel laravel-5 laravel-mail

我有主要的邮件模板(resources / views / mail.blade.php)。这是一个通用模板,可以使用我的所有邮件,例如忘记密码或更改新密码。mail.blade.php的内容如下:

<table>
<tr><td>SiteName</td>
</tr>
<tr><td>{{$content}}</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我通过CKEditor存储电子邮件模板的内容(在mySql数据库中),它看起来像:

<p>Dear {{$username}},</p>
<p>This is your new password: {{$newPassword}}</p>
Run Code Online (Sandbox Code Playgroud)

现在我在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);
});
Run Code Online (Sandbox Code Playgroud)

在mailtrap.io中发送电子邮件后,我看到邮件看起来像:

$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);
});
Run Code Online (Sandbox Code Playgroud)

请注意,mail.blade中写有SiteName的表格tr,td正常工作,电子邮件中没有显示HTML代码。没关系。但是,只有来自CKEditor的内容才带有HTML标记(<p></p>)。

我做错什么了吗?

Tim*_*wis 5

要使用.blade.php文件中PHP变量中的HTML内容,您需要使用{!! $variable !!}而不是{{ $variable }}。第一个将呈现您的HTML,第二个将其输出为字符串,包括HTML标签。您的mail.blade.php文件应如下所示:

<table>
  <tr>
    <td>SiteName</td>
  </tr>
  <tr>
    <td>{!! $content !!}</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)