6

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

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

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

<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> 

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

我做错了什么吗?

4

2 回答 2

7

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

<table>
  <tr>
    <td>SiteName</td>
  </tr>
  <tr>
    <td>{!! $content !!}</td>
  </tr>
</table>
于 2018-05-31T14:17:39.910 回答
2

使用它{!! $content !!} 代替{{ $content }} 它会很好地工作。我遇到了同样的问题。

于 2019-03-12T06:35:13.457 回答