Laravel 5 将 HTML 添加到电子邮件

2022-08-30 18:10:40

我目前正在尝试在Laravel 5中创建HTML电子邮件,并且我想在电子邮件中插入一些文本(包含元素)。我使用以下代码来发送电子邮件:<br/>

Mail::send(array('html' => 'emails.newinvoice'), array('text' => $emailtext), function($message) use ($email, $subject, $contact_company)
{
    $message->to($email, $contact_company)->subject($subject);
});

因此,该变量包含一些带有 HTML 标记的文本。在我的布局视图中,我有以下内容:$emailtextemails.newinvoice

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head></head>
    <body>
        <p>{{{ $text }}}</p>
    </body>
</html>

发送电子邮件时,我的邮件中插入的文本和该文本中的HTML元素显示为普通字符,这意味着我的电子邮件显示为:

test<br/>test

而不是

test
test

如何确保插入文本中的 HTML 标记呈现为 HTML 而不是纯文本?


答案 1

您需要在第一个参数中指定 key:html

Mail::send( ['html' => 'emails.newinvoice'], ['text' => $emailtext], 
//           ^^^^

还要在模板中将自动转义块替换为未转义的块:{{ }}{!! !!}

<p> {!! $text !!} </p>

答案 2

您需要使用:

{!! $text !!}

而不是

{{ $text }}

Blade 在回显时会自动转义任何 html,除非您明确告诉它不要这样做。


推荐