我有主要的邮件模板(resources / views / mail.blade.php)。这是使用我的所有邮件的常用模板,例如忘记密码或更改新密码。 mail.blade.php的内容如下:
decimal newDecimal;
bool isDecimal = Decimal.TryParse(InvoiceDialog.InvoiceAmount, out newDecimal);
string twoDecimalPlaces = newDecimal.ToString("########.00");
invoice.Amount = Convert.ToDecimal(twoDecimalPlaces);
我通过CKEditor存储电子邮件模板的内容(在mySql数据库中),它看起来像:
<table>
<tr><td>SiteName</td>
</tr>
<tr><td>{{$content}}</td></tr>
</table>
现在我在laravel 5.5中使用mail功能如下:
<p>Dear {{$username}},</p>
<p>This is your new password: {{$newPassword}}</p>
在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);
});
请注意,在mail.blade中写入SiteName的表,tr,td正在运行,并且电子邮件中没有显示HTML代码。没关系。但只有来自CKEditor的内容会显示HTML标记(SiteName
<p>Dear Niladri,</p> <p>This is your new password: 123456</p>
)。
我做错了吗?
答案 0 :(得分:4)
要在.blade.php
文件中使用PHP变量中的HTML内容,您需要使用{!! $variable !!}
而不是{{ $variable }}
。第一个将呈现您的HTML,第二个将输出为字符串,包括HTML标记。您的mail.blade.php
文件应如下所示:
<table>
<tr>
<td>SiteName</td>
</tr>
<tr>
<td>{!! $content !!}</td>
</tr>
</table>
答案 1 :(得分:2)
使用{!! $content !!}
代替{{ $content }}
它将完美运行。我也遇到过同样的问题。