显示 html 标签的 Laravel 5 邮件模板

Posted

技术标签:

【中文标题】显示 html 标签的 Laravel 5 邮件模板【英文标题】:Laravel 5 Mail template showing html tags 【发布时间】:2018-11-10 13:42:50 【问题描述】:

我有主邮件模板(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 标签 (&lt;p&gt;&lt;/p&gt;)。

我做错了什么吗?

【问题讨论】:

【参考方案1】:

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

<table>
  <tr>
    <td>SiteName</td>
  </tr>
  <tr>
    <td>!! $content !!</td>
  </tr>
</table>

【讨论】:

谢谢它有帮助:)【参考方案2】:

使用!! $content !! 而不是 $content 它会完美运行。我也遇到过同样的问题。

【讨论】:

嘿,把那个 Wordpress 网站的链接发给我。

以上是关于显示 html 标签的 Laravel 5 邮件模板的主要内容,如果未能解决你的问题,请参考以下文章

当我在 laravel 中发送邮件时发送 Html 标签

如何将数据从选择的 html 标签存储到数据库并显示它...Laravel

如何在 laravel 5.2 中只显示最新的帖子,而且没有 html <p> 标签?

html没有在img标签中显示svg文件

渲染 HTML 标签 Laravel 5 Blade 模板

Laravel 5 Parsedown 将纯 html 标签返回到浏览器