我使用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中的Length参数必须大于0。而不是pdf,如果我创建一个示例文本文件,它是附加的,大小将大于0.我使用github.com/ceeram/CakePdf插件来创建pdf。
答案 0 :(得分:0)
这里的问题($Email->attachments() does not attach file)。顺便说一下,这不是锁定问题。如果您将PDF写入数据库,则可以执行难看的解决方法。看看这里:https://stackoverflow.com/a/17744761/1145597