Laravel Dompdf 附件即将到来 无法 JSON 编码负载。错误代码:5

Laravel Dompdf attachment coming Unable to JSON encode payload. Error code: 5

我在 Mail/Mails.php 文件构建函数中编写了以下代码。

return $this->from(config('app.FROM_EMAIL'),config('app.MAIL_FROM_NAME'))
                    ->subject($this->subject)
                    ->view('emails.generalmail')
                    ->attachData($this->attach,'file_pdf.pdf');

错误

Unable to JSON encode payload. Error code: 5

我使用带附件的 Dompdf 电子邮件发送。

我不确定您使用的 Laravel 是哪个版本,所以它可能会略有不同,但您需要使用 attach 函数而不是 attachData

return $this->from(config('app.FROM_EMAIL'),config('app.MAIL_FROM_NAME'))
                    ->subject($this->subject)
                    ->view('emails.generalmail')
                    ->attach('[PATH TO FILE]');

在此处查看更多内容:Laravel Mail Docs

更改顶部的版本。

您可以在不使用函数将文件保存到磁盘的情况下执行此操作 ->attachData($this->attach,'file_pdf.pdf')。抛出错误是因为 php 不知道如何将二进制 pdf 文件数据序列化为 json。您需要做的是在您的邮件文件句柄函数中生成数据 $this->attach,而不是在构造函数中。这样 php 就不必序列化它了:

```
public function handle() {
    $pdf = PDF::loadView('pdf_view', $data);
    return $this->from(config('app.FROM_EMAIL'),config('app.MAIL_FROM_NAME'))
        ->subject($this->subject)
        ->view('emails.generalmail')
        ->attachData($pdf->output(),'file_pdf.pdf');
}```