나는 dompdf를 사용하여 pdf 파일을 동적으로 생성하고 전자 메일과 보내기에 첨부합니다. 그러나 메일에서 항상 첨부 파일을 0 바이트로 얻습니다. 케이크의 tmp 폴더 아래에 파일을 만들고 성공적으로 만들어지고 있습니다. 저는 cakephp 2.x를 사용하고 CakeEmail을 사용하여 메일을 보냅니다. dompdf 폴더는 플러그인 폴더에 있습니다. lib/fonts 디렉토리에 필요한 권한을 부여했습니다. 파일은 생성 직후 첨부 파일로 보내지 않습니다. domem을 사용하는 동안 cakeemail이 파일의 내용을 가져올 수 없지만 (파일이 존재 함) 어떤 종류의 잠금/지연이 있는지 여부Cakephp는 0 바이트로 첨부 파일을 보내 전자 메일을 보냅니다.
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('[email protected]');
$email->attachments(array($filename));
$email->subject('Your order');
$content = $email->send();
fread() : CakeEmail에서 Length 매개 변수가 0보다 커야합니다. pdf 대신 샘플 텍스트 파일을 만들면 첨부 파일 크기가 0보다 커집니다. pdf 작성을 위해 github.com/ceeram/CakePdf 플러그인을 사용하고 있습니다.
'$ path'와'$ filename'이 맞습니까? 그렇다면'send()'뒤에 생성 된 파일을 지우고 있습니까? – noslone
빠른 답장을 보내 주셔서 감사합니다. 경로가 맞는지 확인하십시오. 거기에 이전에 생성 된 파일의 이름을 하드 코드하면 첨부됩니다. 파일을 삭제하지 않을 것입니다. 또한 로컬 컴퓨터에서 CSS와 이미지가 pdf로 표시되지만 프로덕션으로 이동하면 표시되지 않습니다. 그것이 이것에 영향을 줄 것인가? – binoy
비슷한 것을 구현했고 파일을 찾을 수 없을 때 첨부 파일이 0 바이트가되었습니다. 로그를 확인 했습니까? – noslone