gpt4 book ai didi

发送的 Laravel 通知没有内容且主题错误

转载 作者:行者123 更新时间:2023-12-01 05:50:28 28 4
gpt4 key购买 nike

我在 app/Notifications 中创建了此通知:

class StatisticsExportNotification extends Notification implements ShouldQueue
{
use Queueable;
use EmailNotificationViewHTMLTrait;

protected $links;

/**
* Create a new notification instance.
*
*/
public function __construct($links)
{
$this->links = $links;
}

/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return [
MailChannel::class
];
}

/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
list($subject, $viewData) = $this->getNotificationViewHTML('statistics_export', $notifiable, ['links' => $this->links]);

return (new MailMessage())
->subject($subject)
->view('mail.main', compact('viewData'));
}
}

我正在尝试像这样发送它:
$member->notify(
new StatisticsExportNotification('testing')
);

现在,电子邮件 HTML 模板的内容只是:
{{links}}

但是我已经确认,如果 HTML 只是一个硬编码的字符串并且我不尝试将任何变量传递给它,则会发生同样的问题。

那个问题是,在我看来, toMail方法在这里根本没有被调用。当我这样做时 logger()->debug($links)在类构造函数中,它记录变量的值。但是当我这样做时 logger()->debug('test')toMail() ,它不记录任何东西!

如果我对方法中的主题和内容进行硬编码,则没有区别:
public function toMail($notifiable)
{
$subject = "foo";
$viewData = ["test" => "bar"];

return (new MailMessage())
->subject($subject)
->view('mail.main', compact('viewData'));
}

无论我做什么,系统都会将通知发送到成员(member)的电子邮件,但主题是“统计导出通知”,电子邮件正文为空!

什么 getNotificationViewHTML确实是获取消息的模板并用我们传递给它的数据填充它,但同样,这段代码似乎根本没有发挥作用。我也尝试在该方法中添加日志记录,甚至输入我知道如果执行会抛出错误的代码,但无论我做什么,通知都会发送相同的默认主题和相同的空正文。

最佳答案

我试图重新创建您的问题,我想我以某种方式做了,但在您自己测试之前,我永远无法确定 100%。所以这里有一些建议:

1-在测试时,尝试使用直接数组而不是紧凑来转换它

public function toMail($notifiable)
{
$subject = "foo";
$viewData = ["links" => "Here is the Links"];

return (new MailMessage())
->subject($subject)
->view('mail.main', $viewData);
}

2- 在您的 mail.main查看文件,正确的语法应该包含带有 $ 的变量名:
{{ $links }}

而不仅仅是
{{ links }}

3- 可能是你真正的问题,确保你的 View 文件有 .blade.php这样 Blade 就可以解析像 @section 这样的代码, @yield , {{$links}}等。您的邮件 View 文件名应该是:
views/mail/main.blade.php

4- 更改统计通知文件中的任何代码后,不要忘记重新启动队列代码。这应该设置 $subject成功地 :
php artisan queue:restart

然后再次启动它
php artisan queue:work  --tries=3

关于发送的 Laravel 通知没有内容且主题错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54883369/

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