1

CakeEmail 帮助页面指出,从 2.4 开始添加数据选项,因此您不再需要物理文件来向电子邮件添加附件。

我有以下代码:

$Email->from(array($this->Session->read('Auth.User.email') => $this->Session->read('Auth.User.name')))
->to($this->request->data['email-to'])
->subject($this->request->data['email-subject'])
->attachments(array('attachement1.pdf', array('data' => $pdf)))
->send($this->request->data['email-message']);

但是每当我运行它时,我都会收到一个内部错误,提示找不到文件:“”。

4

1 回答 1

4

我查看了源代码(我开始学习它通常比阅读文档更有用!):https ://github.com/cakephp/cakephp/blob/master/lib/Cake/Network/Email /CakeEmail.php

将我的代码更改为:

$Email = new CakeEmail('default');
$Email->from(array($this->Session->read('Auth.User.email') => $this->Session->read('Auth.User.name')))
->to($this->request->data['email-to'])
->subject($this->request->data['email-subject'])
->attachments(array('attachement1.pdf' => array('data' => $pdf, 'mimetype' => 'application/pdf')))
->send($this->request->data['email-message']);

请注意,在附件行中,数组被分配给文件名变量,而不是作为参数传入!

为了完整起见,如果其他人正在阅读本文并想知道我如何使用 CakePDF 生成我的 PDF:

// Create PDF for attachment
$CakePdf = new CakePdf();
$CakePdf->template('claim', 'default');
//get the pdf string returned
$pdf = $CakePdf->output();
于 2013-09-17T09:04:30.377 回答