gpt4 book ai didi

php - Laravel 5.3 - 邮件通知中的行之间没有中断?

转载 作者:行者123 更新时间:2023-12-03 18:40:32 25 4
gpt4 key购买 nike

我通过 toMail channel 发送了一封电子邮件,该 channel 是从文本区域保存的,我在该文本区域中按了两次回车换行,因此在输入中看起来像这样:

Line 1

Line 2 with space above and below

Line 3

当我像这样在邮件中使用该文本时:

return (new MailMessage)->subject('test spacing')
->line($this->text);

在邮件中看起来是这样的:

Line 1 Line 2 with space above and below Line 3

我更改了 email.blade.php 中的相关部分:

@foreach ($introLines as $line)
{{ $line }}
@endforeach

收件人:

@foreach ($introLines as $line)
{!! nl2br(htmlspecialchars($line)) !!}
@endforeach

但是还是不行。在db的notifications表中,保存为:

Line 1\n\nLine 2 with space above and below\n\nLine 3

知道如何让已发送的电子邮件显示间距,使其不只是一大块吗?

更新:

所以 laravelnotifications 表中插入带有 \n\n 的通知,但实际上是保存在 model 中 像这样的表:

enter image description here

传递给 email 的是什么,但仍然不确定如何在 email 中获取这些空格。

最佳答案

你的输入文本包含 Laravel 会自动去除的换行符(参见 Illuminate\Notifications\Messages\SimpleMessage 类的 formatLine() 方法,MailMessage 是基于)。您可以继承 MailMessage 并覆盖格式:

class CustomMailMessage extends MailMessage {

protected function formatLine($line) {
if (is_array($line)) {
return implode(' ', array_map('trim', $line));
}
// Just return without removing new lines.
return trim($line);
}

}

或者您可以在将文本发送到 MailMessage 之前拆分文本。由于“行”方法接受字符串或数组,您可以拆分行并一次将它们全部传递:

return (new MailMessage)->subject('test spacing')
->line(array_map('trim', preg_split('/\\r\\n|\\r|\\n/', $this->text)));

关于php - Laravel 5.3 - 邮件通知中的行之间没有中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43148100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com