Я создаю 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