codeigniter отправить PDF-файл в виде вложения электронной почты

Я создаю pdf-файлы на лету, используя TCPDF . Используя TCPDF, я получаю исходный файл с кодировкой base64, теперь я хочу отправить эти необработанные данные в виде вложения электронной почты с codeigniter вспомогательной функции email codeigniter .

Как это можно сделать?

Понадобился время, чтобы найти ответ, надеюсь, что это поможет кому угодно в будущем:

  // Get email address and base64 via ajax $email = $this->input->post('email'); $base64 = $this->input->post('base64'); $base64 = str_replace('data:application/pdf;base64,', '', $base64); $base64 = str_replace(' ', '+', $base64); $data = base64_decode($base64); // Locally emails do now work, so I use this to connect through my gmail account to send emails $config = Array( 'protocol' => 'smtp', 'smtp_host' => 'ssl://smtp.googlemail.com', 'smtp_port' => 465, 'smtp_user' => 'MyEmailAddress@gmail.com', 'smtp_pass' => 'MyEmailPassword', 'mailtype' => 'html', 'charset' => 'iso-8859-1' ); $this->load->library('email', $config); $this->email->set_newline("\r\n"); $this->email->to($email); $this->email->from('noreply@whatever.ca', 'base64'); $this->email->subject('base64'); // Using the string_attach($str_file, $filename, $mime, $disposition = 'attachment') // function located in CodeIgniter\application\libraries\Email.php $this->email->string_attach($data, 'base64.pdf', 'application/pdf'); $this->email->send(); 
  /*its batter to make function*/ /*-------COPY THIS CODE---- */ $newFile = 'Path/to/save/filename.pdf'; $obj = new $this->pdf; $obj->SetSubject('BLAH BLAH'); // set document information $obj->SetKeywords('Blah, Blah, Blah'); $obj->AddPage(); // add a page $obj->SetFont('helvetica', '', 6); $obj->writeHTML("Your text goes here", true, false, false, false, ''); $obj->Output($newFile, 'F'); //Close and output PDF document /*-------SENDING EMAIL---- */ $this->load->library('email'); $this->email->from('noreply@example.com', 'Example'); $this->email->to('to@example.com'); $this->email->subject('Subject Goes Here'); $this->email->message('Message goes here'); $this->email->attach($newFile); $this->email->send(); 

Вы должны сохранить файл, прежде чем присоединять его по электронной почте

  $obj = new $this->pdf; $obj->SetSubject('BLAH BLAH'); // set document information $obj->SetKeywords('Blah, Blah, Blah'); $obj->AddPage(); // add a page $obj->SetFont('helvetica', '', 6); $obj->writeHTML("Your text goes here", true, false, false, false, ''); $obj->Output('Path/to/save/filename.pdf', 'F'); //Close and output PDF document 

И чем отправить электронную почту, как это

  $this->load->library('email'); $this->email->from('noreply@example.com', 'Example'); $this->email->to('to@example.com'); $this->email->subject('Subject Goes Here'); $this->email->message('Message goes here'); $this->email->attach('Path/to/saved/filename.pdf'); $this->email->send(); 
  $newFile = 'Path/to/save/filename.pdf'; $obj = new $this->pdf; $obj->SetSubject('BLAH BLAH'); // set document information $obj->SetKeywords('Blah, Blah, Blah'); $obj->AddPage(); // add a page $obj->SetFont('helvetica', '', 6); $obj->writeHTML("Your text goes here", true, false, false, false, ''); $obj->Output($newFile, 'F'); //Close and output PDF document