Как отправить письмо с вложением файла динамического просмотра в codeigniter? - PullRequest
0 голосов
/ 29 сентября 2018

Я работаю над проектом 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("\r\n");
      $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));
    } 

Как вы можете видеть вышея получаю данные с идентификатором в одном массиве из моей модели $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));

Я искал много лотов в сети, но не нашел решения.Как заранее загрузить мой файл просмотра в виде вложения в codeigniter.thanks.

1 Ответ

0 голосов
/ 29 сентября 2018

Сначала закомментируйте $this->load->view('layouts/emp_pdf',$data);

и используйте функцию буфера: https://www.codeigniter.com/userguide3/libraries/email.html#CI_Email::attach

Если вам нужно использовать строку буфера вместо реального физического файла, который выможно использовать первый параметр в качестве буфера, третий параметр в качестве имени файла и четвертый параметр в качестве mime-типа

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

Также в вашей электронной почте отсутствуют to, subject и message но я полагаю, вы еще этого не добавили.

...