【问题标题】:Laravel Dompdf attachment coming Unable to JSON encode payload. Error code: 5Laravel Dompdf 附件无法对有效负载进行 JSON 编码。错误代码:5
【发布时间】:2021-02-15 13:47:26
【问题描述】:

我在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');

错误

无法对负载进行 JSON 编码。错误代码:5

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

【问题讨论】:

    标签: laravel dompdf


    【解决方案1】:

    您可以使用该功能在不将文件保存到磁盘的情况下执行此操作 ->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');
    }```
    

    【讨论】:

      【解决方案2】:

      我不确定您使用的是哪个版本的 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

      在顶部更改版本。

      【讨论】:

      • 谢谢你,但我想不存储在文件夹中。
      • 您需要将其临时存储在某个地方以作为附件发送
      • 好的,没有商店就不可能吗?
      • 不,很遗憾没有
      • 您能否在有时间的时候将答案标记为正确的答案,即使它不能直接解决您的问题,它也会在未来的人遇到类似问题时帮助他们
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 2017-08-21
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 2017-06-11
      • 2021-08-30
      相关资源
      最近更新 更多