Laravel 5将HTML添加到电子邮件中

Dev*_*s50 20 html php email newline laravel

我目前正在尝试在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);
});
Run Code Online (Sandbox Code Playgroud)

因此该$emailtext变量包含一些带有HTML标记的文本.在我的emails.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>
Run Code Online (Sandbox Code Playgroud)

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

test<br/>test
Run Code Online (Sandbox Code Playgroud)

代替

test
test
Run Code Online (Sandbox Code Playgroud)

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

Lim*_*nte 28

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

Mail::send( ['html' => 'emails.newinvoice'], ['text' => $emailtext], 
//           ^^^^
Run Code Online (Sandbox Code Playgroud)

同样替换模板中未{{ }}转义的自动转义块{!! !!}:

<p> {!! $text !!} </p>
Run Code Online (Sandbox Code Playgroud)


Igo*_*vić 15

你需要使用:

{!! $text !!}
Run Code Online (Sandbox Code Playgroud)

代替

{{ $text }}
Run Code Online (Sandbox Code Playgroud)

除非你明确告诉它,否则Blade会在回显时自动转义任何html.