Laravel 5.3将html添加到MailMessage-> line

Arn*_*rdt 2 html php email laravel laravel-5

我喜欢使用MailMessage将一些html标签添加到我的邮件正文中,如下所示:

$mailMessage = new MailMessage();
$mailMessage->line(trans('mail.someLine') );
Run Code Online (Sandbox Code Playgroud)

在mail.php中:

'someLine' => 'Bla bla <a href="html://someurl">html://someurl</a>'
Run Code Online (Sandbox Code Playgroud)

但在实际邮件中,整行都以纯文本形式出现.

我试过使用html_entity_decode但没有任何成功:

 $mailMessage->line(html_entity_decode(trans('mail.someLine')));
Run Code Online (Sandbox Code Playgroud)

看起来像行方法它自己编码.这有解决方法吗?

ps其余的邮件都有正确的HTML,所以这不是重点!

更新:$ mailMessage->在这种情况下不会执行操作.让我们说它应该适用于这样的事情: $mailMessage->line('Bla bla <strong>something strong</strong> bla');

Arn*_*rdt 7

检查MailMessage/SimpleMessage代码我发现这些类不是编码,而是email.blade.php模板本身.

{{ $line }}部分更改为 {!! $line !!}email.blade.php最终成功了.

ps确保先运行,php artisan vendor:publish这样就不需要更改vendor文件夹中的原始email.blade.php!


小智 7

更好地使用HtmlString类。

use Illuminate\Support\HtmlString;

return (new MailMessage)
  ->line(new HtmlString($someHtmlBody));
Run Code Online (Sandbox Code Playgroud)

行将显示为已处理的HTML代码。

  • 工作完美 - 请注意此 HTML 不会被转义,因此不要在此处包含用户输入,除非您知道它是安全的。 (2认同)