Laravel nl2br()发送电子邮件

时间:2016-11-03 12:23:24

标签: php email blade laravel-5.3 nl2br

我正在使用[ 0 ][ 1 ][ 2 ] [ -----3------] [----2---] [-1-] [] ,我正在尝试发送一封Laravel 5.3的电子邮件。所以我使用了nl2br()email blade file)中新增的默认Laravel 5.3

但它没有显示换行符。只有这个:

vendor/notifications/email.blade.php

我这样做了:

sttesttesttesttesttesttesttesttesttesttesttesttest<br /> <br /> <br /> <br /> testtesttesttesttesttesttesttesttesttesttesttesttesttesttest

我做错了什么?

此:

<!-- Outro -->
@foreach ($outroLines as $line)
    <p style="{{ $style['``'] }}">
        {{ nl2br($line) }}
    </p>
@endforeach

无效。

3 个答案:

答案 0 :(得分:1)

Laravel使用{{}}

自动转义字符串

对于laravel 4+使用{{{ nl2br($line) }}}

对于laravel 5+使用{!! nl2br($line) !!}

如果我在版本控制上出错了,请纠正我。

答案 1 :(得分:1)

对于 Laravel 4 用户:

{{ nl2br(e($message)) }}

e($x)相当于{{{ $x }}}

Laravel 5 用户:

{!! nl2br(e($message)) !!}

e($x)相当于{{ $x }}

答案 2 :(得分:0)

我知道这有点晚了,但对于遇到同样问题的每个人。 如果您使用通知邮件,新行将无效(&#34; \ n&#34;,&#34; \ r&#34;,&#34; \ r \ n&#34;)。

这是因为Laravel(我可以确认5.35.4)从行中剥离这些

  

供应商\ laravel \框架\ SRC \照亮\通知\消息\ SimpleMessage.php

protected function formatLine($line)
{
    if (is_array($line)) {
        return implode(' ', array_map('trim', $line));
    }

    return trim(implode(' ', array_map('trim', preg_split('/\\r\\n|\\r|\\n/', $line))));
}

我是如何通过用实际的html新行<br>替换新行来解决这个问题的。

有更好的方法可以做到这一点我确定,但重要的是不要忽视formatLine函数。

public function toMail($notifiable) {

    //Get your mail data
    $mail = new Email(2);
    $emailLine = $mail->getArray();

    return (new MailMessage)
        ->line(str_replace(array("\\r\\n", "\\n", "\\r","\r\n", "\n", "\r"), "<br>", $emailLine))

}