如何在代码点火器中发送带有动态视图文件附件的电子邮件?



我正在从事 CI 项目,我想在其中发送电子邮件以特定 附有一份 PDF 的用户。我正在尝试发送我的动态视图 我用m_pdf生成的文件,但它对我不起作用。 它没有附加任何东西。向我显示错误">ci_loader不能 用作字符串'。

这是我的控制器功能:

public function emp_pdf()
{
$this->load->model('my_model');
ob_end_clean();
$this->load->library('m_pdf'); 
$id=$this->uri->segment(3);
$dataObj=array('id'=>$id);
$data['data_pdf']=$this->my_model->method($dataObj);
$this->load->view('layouts/emp_pdf',$data); 
$this->load->library('email', $config);
$this->email->set_newline("rn");
$this->email->from('abc@gmail.com');
$this->email->to();
$this->email->subject();
$this->email->message();
$this->email->attach($this->load->view('layouts/emp_pdf',$data));
} 

正如您在上面看到的,我正在从我的模型中获取一个数组中带有 id 的数据$dataObj=array('id'=>$id); $data['data_pdf']=$this->my_model->method($dataObj);

并将此数组传递给我的视图文件$this->load->view('layouts/emp_pdf',$data);.

我正在使用相同的功能查看文件或下载pdf,并且它运行良好,但是如果我附加邮件则相同的文件无法正常工作。$this->email->attach($this->load->view('layouts/emp_pdf',$data));

我在网上搜索了很多东西,但没有得到解决方案。 如何在代码点火器中将我的视图文件作为附件加载.提前感谢。

注释掉第一个$this->load->view('layouts/emp_pdf',$data);

并使用缓冲功能:https://www.codeigniter.com/userguide3/libraries/email.html#CI_Email::attach

如果需要使用缓冲区字符串而不是实际的物理文件 您可以将第一个参数用作缓冲区,第三个参数用作文件 name 和第四个参数作为 MIME 类型

$attach_str = $this->load->view('layouts/emp_pdf',$data,true); // true returns 
$this->email->attach($attach_str, 'attachement', 'somename.pdf', 'application/pdf');

此外,您的电子邮件缺少tosubjectmessage,但我认为您尚未添加。

相关内容

  • 没有找到相关文章

最新更新