【发布时间】:2012-09-05 15:37:39
【问题描述】:
我正在使用 CakePHP 2、CakeEmail 和 CakePDF 插件
我正在尝试基于视图生成 PDF 并将其附加到电子邮件中。我已经阅读了自述文件,但仍然不明智。我必须在服务器上实际创建文件吗?
这是我目前的代码(已发送电子邮件但未发送 PDF)。
// Build PDF as attachment
$CakePdf = new CakePdf();
$CakePdf->template('email_view', 'default');
//get the pdf string returned
$pdf = $CakePdf->output();
// SMTP Options
$this->Email->smtpOptions = array(
// Only to be used internally
'port'=>'25',
'timeout'=>'30',
'host' => '111.111.111.111',
'username'=>'',
'password'=>''
);
$this->Email->template = 'newExpenseClaim';
$this->Email->from = 'Expense Tracker <james@test.com>';
$this->Email->to = 'james@test.com';
$this->Email->subject = 'New Expense Claim Submitted - Please Review';
$this->Email->sendAs = 'both';
$this->Email->delivery = 'smtp';
$this->Email->attachments = $pdf;
// Set username & url in email
$this->set('user', $fu['User']['name']);
$this->set('ms', $ms);
$this->Email->send();
$this->set('smtp_errors', $this->Email->smtpError);
这是来自 github 的自述:
https://github.com/ceeram/CakePdf
任何帮助将不胜感激!
【问题讨论】:
-
好的,看起来你不能这样做 - 你必须在服务器上创建文件然后附加。但是,我现在在设置视图变量时遇到了问题,因为您必须设置的视图模板路径位于我的控制器/视图文件夹之外。基本上如果我可以改变: $CakePdf->template('email_view', 'default');类似于: $CakePdf->template('MyControllerName/email_view', 'default');它会起作用 - 插件所有者说使用 $CakePdf->viewVars() 但没有提供如何传递信息的详细信息 ($CakePdf->viewVars('expenseClaim', $this->ExpenseClaim->read(null, $id) );) 不起作用...有什么想法吗?
标签: cakephp