Laravel 5 显示 html 个标签的邮件模板
Laravel 5 Mail template showing html tags
我有主邮件模板 (resources/views/mail.blade.php)。这是一个通用模板,可用于我所有的邮件,例如忘记密码或更改新密码。 mail.blade.php的内容如下:
<table>
<tr><td>SiteName</td>
</tr>
<tr><td>{{$content}}</td></tr>
</table>
我正在通过 CKEditor 存储电子邮件模板的内容(在 mySql 数据库中),它看起来像:
<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 的 table、tr、td 有效,并且电子邮件中未显示 HTML 代码。没关系。但只有来自 CKEditor 的内容显示有 HTML 标签 (<p></p>
).
我做错了什么吗?
要在 .blade.php
文件中使用 PHP 变量的 HTML 内容,您需要使用 {!! $variable !!}
而不是 {{ $variable }}
。第一个将呈现您的 HTML,第二个将其输出为字符串,包括 HTML 标记。您的 mail.blade.php
文件应如下所示:
<table>
<tr>
<td>SiteName</td>
</tr>
<tr>
<td>{!! $content !!}</td>
</tr>
</table>
使用 {!! $content !!}
而不是 {{ $content }}
它会工作 perfectly.I 遇到了同样的问题。
我有主邮件模板 (resources/views/mail.blade.php)。这是一个通用模板,可用于我所有的邮件,例如忘记密码或更改新密码。 mail.blade.php的内容如下:
<table>
<tr><td>SiteName</td>
</tr>
<tr><td>{{$content}}</td></tr>
</table>
我正在通过 CKEditor 存储电子邮件模板的内容(在 mySql 数据库中),它看起来像:
<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 的 table、tr、td 有效,并且电子邮件中未显示 HTML 代码。没关系。但只有来自 CKEditor 的内容显示有 HTML 标签 (<p></p>
).
我做错了什么吗?
要在 .blade.php
文件中使用 PHP 变量的 HTML 内容,您需要使用 {!! $variable !!}
而不是 {{ $variable }}
。第一个将呈现您的 HTML,第二个将其输出为字符串,包括 HTML 标记。您的 mail.blade.php
文件应如下所示:
<table>
<tr>
<td>SiteName</td>
</tr>
<tr>
<td>{!! $content !!}</td>
</tr>
</table>
使用 {!! $content !!}
而不是 {{ $content }}
它会工作 perfectly.I 遇到了同样的问题。