Php TCPDF Laravel电子邮件附件

Php TCPDF Laravel电子邮件附件,php,email-attachments,tcpdf,laravel-5.1,Php,Email Attachments,Tcpdf,Laravel 5.1,TCPDF似乎与用于在Laravel 5.1中发送PDF附件的$dest选项(“E”或“S”)都不能很好地配合使用。启动Acrobat Reader时,文件总是会因错误而损坏(错误消息:……例如,它是作为电子邮件附件发送的,未正确解码)。当我尝试另一个PDF生成器(如DOMPDF)时,解码似乎还可以 $pdf = new \TCPDF('P', 'in', 'LETTER', true, 'UTF-8', false); $pdf->WriteHTML(view('emails.recei

TCPDF似乎与用于在Laravel 5.1中发送PDF附件的
$dest
选项(“E”或“S”)都不能很好地配合使用。启动Acrobat Reader时,文件总是会因错误而损坏(错误消息:……例如,它是作为电子邮件附件发送的,未正确解码)。当我尝试另一个PDF生成器(如DOMPDF)时,解码似乎还可以

$pdf = new \TCPDF('P', 'in', 'LETTER', true, 'UTF-8', false);
$pdf->WriteHTML(view('emails.receipt_pdf', $receipt_data));
$attachment = $pdf->Output('Receipt - '.date("M-d-Y").'.pdf','E');

Mail::queue('emails.receipt_email', $receipt_data, function($message) use ($email, $attachment)
{
  $message->from('no-reply@website.com')
    ->to($email)
    ->subject('Receipt')
    ->attachData($attachment, 'Receipt.pdf');
});
生成pdf时,只需使用“S”选项即可。与电子邮件相关的事情将由Laravel完成

更新

$attachment = $pdf->Output('Receipt - '.date("M-d-Y").'.pdf','E');


此外,如果您使用的是queue()而不是send(),则会因为附件而失败。若要排队,请编写作业并使用作业队列发送。

您是否尝试过在本地保存该文件而不通过电子邮件发送,在这种情况下可以吗?是的,当我使用
$dest
选项“D”或“I”时,PDF呈现得非常完美,没有损坏。请尝试一件事,首先将文件保存到本地存储器,然后尝试从存储器发送该文件。不是从TCPDF输出。是的,当我使用
$dest
选项“F”保存到文件系统,然后使用Laravel函数
attach('filepath.name')
附加时,文件没有损坏。为什么“E”或“S”似乎会损坏文件?在发送之前,我可能需要对字符串/附件进行一些额外的准备。如果可能的话,我不希望在发送之前保存到文件系统。如果有人需要此解决方案,请参阅此处的解决方案:
$attachment = $pdf->Output('Receipt - '.date("M-d-Y").'.pdf','S');