2016-06-16 6 views
4

У меня есть PDF, который я сгенерировал из html-представления в Codeigniter, и теперь я хочу отправить его на мой адрес электронной почты, но проблема, с которой я столкнулась, заключается в том, что он показывает, что есть строка в $pdf, но его пустым при отправке в мой адрес электронной почты. Вот вся функция Codeigniter.Электронная почта сгенерирована dompdf с codeigniter

public function generatePDF() 
{ 
    require_once(APPPATH.'third_party/dompdf/dompdf_config.inc.php'); 

    $dompdf = new Dompdf(); 
    $msg = $this->load->view('credit_agreement_view', '', true); 
    $html = mb_convert_encoding($msg, 'HTML-ENTITIES', 'UTF-8'); 
    $dompdf->load_html($html); 
    $paper_orientation = 'Potrait'; 
    $dompdf->set_paper($paper_orientation); 

    // Render the HTML as PDF 
    $dompdf->render(); 
    $pdf = $dompdf->output(); 

    // sending the pdf to email 
    $this->load->library('email'); 
    $config['protocol'] = 'smtp'; 
    $config['smtp_host'] = 'ssl://smtp.gmail.com'; 
    $config['smtp_port'] = '465'; 
    $config['smtp_timeout'] = '7'; 
    $config['smtp_user'] = '[email protected]'; 
    $config['smtp_pass'] = '#######'; 
    $config['charset'] = 'utf-8'; 
    $config['newline'] = "\r\n"; 
    $config['mailtype'] = 'text'; // or html 
    $config['validation'] = TRUE; // bool whether to validate email or not  
    $this->email->initialize($config); 

    $this->email->from('[email protected]', 'aurora exchange'); 
    $this->email->to('[email protected]'); 
    $this->email->subject('pdf'); 
    $this->email->attach($pdf); 
    $this->email->message('Hello!'); 

    $this->email->send(); 
} 
+1

сначала сохранить затем прикрепить с абсолютным путем –

+0

@ManinderpreetSingh то будет в основном экономить на мой компьютер, который я не хочу, я хочу, чтобы напрямую отправить его на мой адрес электронной почты или, может быть, позже, сохраните его в базу данных MySQL –

+0

изменить эту строку $ this-> email-> присоединять ($ PDF); до $ this-> email-> string_attach ($ pdf, 'myfile.pdf', 'application/pdf'); –

ответ

0

Чтобы отправить сообщение, необходимо создать файл pdf, а не просто визуализировать его в браузере в формате pdf. После $dompdf->render(); строка добавьте $dompdf->stream("attachment.pdf"); и при установке используйте абсолютный путь этого файла вложения. вы всегда можете отменить (удалить) вложение после отправки электронной почты.

+0

Да, но я не хочу, чтобы он хранил электронное письмо по определенному пути, либо я бы сохранил его в базе данных, либо отправил его в виде электронной почты, поэтому его ДОЛЖЕН для меня не хранить его в накопителе –

+0

@MasnadNihit, какая версия кодеринга ты используешь?? –

+0

2.1.4 - это версия –

1

Ваш код помог мне внедрить отправку вложений PDF без сохранения их на сервере. Я не вызывал метод рендеринга.

//load dompdf library 
    $this->load->library('PHPPdf'); 
    $objPHPPdf = new PHPPdf(); 
    $objPHPPdf->loadHtml($attachment, 'UTF-8'); 
    // (Optional) Setup the paper size and orientation 
    $objPHPPdf->setPaper('A4', 'portrait'); 
    // Render the HTML as PDF 
    $objPHPPdf->render(); 
    $pdf = $objPHPPdf->output(); 
    $this->load->library('email'); 
    $this->email->initialize($this->config->item("email_config")); 
    $from = $this->config->item("email_from"); 
    $this->email->from($from["from"], $from["from_name"]); 
    $this->email->to($to); 
    $this->email->subject('Sample'); 
    $this->email->message('Sample message'); 
    $this->email->attach($pdf, 'application/pdf', "Pdf File " . date("m-d H-i-s") . ".pdf", false); 

    $r = $this->email->send(); 
    if (!$r) { 
     // "Failed to send email:" . $this->email->print_debugger(array("header"))); 
    } else { 
     // "Email sent" 
    } 
+0

Это очень приятно! –

Смежные вопросы