Php 使用codeigniter通过电子邮件发送dompdf生成的pdf
我有一个从Codeigniter中的html视图生成的PDF,现在我想将它发送到我的电子邮件,但我遇到的问题是,它显示Php 使用codeigniter通过电子邮件发送dompdf生成的pdf,php,codeigniter,pdf,dompdf,Php,Codeigniter,Pdf,Dompdf,我有一个从Codeigniter中的html视图生成的PDF,现在我想将它发送到我的电子邮件,但我遇到的问题是,它显示$PDF中有一个字符串,但在我的电子邮件中发送时它是空的。下面是整个Codeigniter功能 public function generatePDF() { require_once(APPPATH.'third_party/dompdf/dompdf_config.inc.php'); $dompdf = new Dompdf(); $msg = $
$PDF
中有一个字符串,但在我的电子邮件中发送时它是空的。下面是整个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'] = 'support@aurorax.co';
$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('support@aurorax.co', 'aurora exchange');
$this->email->to('masnad@aurorax.co');
$this->email->subject('pdf');
$this->email->attach($pdf);
$this->email->message('Hello!');
$this->email->send();
}
要实际发送附件,您必须生成pdf文件,而不仅仅是在浏览器中将其呈现为pdf。在
$dompdf->render()之后代码>行添加
$dompdf->stream(“attachment.pdf”)代码>
并在附加时使用此附件文件的绝对路径。发送电子邮件后,您始终可以取消链接(删除)附件。您的代码帮助我实现了发送pdf附件而无需将其保存在服务器上。我没有调用render方法
//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"
}
首先保存,然后附加绝对值path@ManinderpreetSingh这基本上是保存到我的计算机,我不想,我想直接发送到我的电子邮件,或者以后保存到mysql数据库更改您的此行$this->email->attach($pdf);到$this->email->string_attach($pdf,'myfile.pdf','application/pdf')@ManinderpreetSingh我确实这么做了,但我遇到了一个错误致命错误:调用C:\Apache24\htdocs\@ManinderpreetSingh中未定义的方法CI_Email::string_attach(),你读过我之前的评论吗?是的,但我不想让它将电子邮件存储在某个路径中,我会将其存储在数据库中或作为电子邮件发送,所以我必须不要把它储存在仓库里drive@MasnadNihit您使用的是哪个版本的codeigniter?.2.1.4版本?我不认为存在任何接受原始数据的方法…您必须扩展电子邮件类并覆盖现有方法。希望这个链接能对你有所帮助。。但是有没有一种方法可以将它保存到数据库中,然后导出出来呢?这真是太好了!