0

我正在使用 dompdf 动态生成 pdf 文件并将它们附加到电子邮件和发送中。但在邮件中,我总是将附件作为 0 字节。我正在 cake 的 tmp 文件夹下创建文件,并且创建成功。我使用 cakephp 2.x 并使用 CakeEmail 发送邮件。dompdf 文件夹位于插件文件夹中。我已授予 lib/fonts 目录必要的权限。该文件在创建后不会立即作为附件发送。使用 dompdf 时是否会有任何类型的锁定/延迟,即 cakeemail 无法获取文件的内容(但文件存在)?

App::uses('CakePdf', 'CakePdf.Pdf');
$CakePdf = new CakePdf();

$orderDetails = array('1' => 'myproduct');
$CakePdf->viewVars(compact('orderDetails'));      

$CakePdf->template('view_ticket_pdf', 'default');
$filename = TMP . $data['Billing']['order_id'] . '.pdf';
$pdf = $CakePdf->output();
$CakePdf->write( $filename);

$email = new CakeEmail('smtp');
$desc = $email->template('order_mail');
$email->emailFormat('html');
$email->from(array(ADMIN_EMAIL => 'Admin'));
$email->to('user@gmail.com');
$email->attachments(array($filename));
$email->subject('Your order');
$content = $email->send();

我收到 fread() 错误:CakeEmail 中的长度参数必须大于 0。如果我创建一个示例文本文件,而不是 pdf,它会附加并且大小将大于 0。我正在使用 github.com/ceeram/CakePdf 插件来创建 pdf。

4

1 回答 1

0

同样的问题($Email->attachments() 不附加文件)。顺便说一句,这不是锁定问题。如果您将 PDF 写入数据库,您可以做一个丑陋的解决方法。看看这里:https ://stackoverflow.com/a/17744761/1145597

于 2013-07-19T11:18:50.150 回答