内容简介:你可以用:$fileatt = $pdf->输出(‘quotation.pdf’,’E’);选项E:将文档作为base64 mime多部分电子邮件附件(RFC 2045)返回,我发现此信息:
我有一个简单的课程申请表,填写完成后,会向申请人发送一封电子邮件,并附上他选择作为pdf附件的课程的费用报价.
我正在使用TCPDF并使用会话变量将数据从表单传递到库.内容采用html格式.
生成PDF并根据需要作为附件发送.问题是它是空白的..只有页眉和页脚在文档中.在 linux 中尤其如此.在Windows中,pdf文档在下载时按预期生成.但是,在下载文档之前单击“视图”时,只显示页眉和页脚.
这是我的代码.请有人帮忙.谢谢.
<?php session_start(); require_once('../config/lang/eng.php'); require_once('../tcpdf.php'); // create new PDF document $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // set document information $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('Josiah Njuki'); $pdf->SetTitle('Quotation Request'); $pdf->SetSubject('TCPDF Tutorial'); $pdf->SetKeywords('TCPDF, PDF, example, test, guide'); // set default header data $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, '', PDF_HEADER_STRING); // set header and footer fonts $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); // set default monospaced font $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); //set margins $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); //set auto page breaks $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); //set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); //set some language-dependent strings $pdf->setLanguageArray($l); // --------------------------------------------------------- // set default font subsetting mode $pdf->setFontSubsetting(true); // Set font // dejavusans is a UTF-8 Unicode font, if you only need to // print standard ASCII chars, you can use core fonts like // helvetica or times to reduce file size. $pdf->SetFont('dejavusans', '', 14, '', true); // Add a page // This method has several options, check the source code documentation for more information. $pdf->AddPage(); // Set some content to print $html = '<span style="font-size:7pt;">' . $_SESSION['content'] . '</span>'; $html .= <<<EOD EOD; // Print text using writeHTMLCell() $pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', $html, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true); // --------------------------------------------------------- // Close and output PDF document // This method has several options, check the source code documentation for more information. //$pdf->Output('example_001.pdf', 'I'); $doc = $pdf->Output('quotation.pdf', 'S'); //define the receiver of the email $name = "Name goes here"; $email = "jnjuki103@gmail.com"; $to = "$name <{$_SESSION['email']}>"; $from = "John-Smith "; $subject = "Here is your attachment"; $fileatt = $pdf->Output('quotation.pdf', 'S'); //$fileatt = "./test.pdf"; $fileatttype = "application/pdf"; $fileattname = "newname.pdf"; $headers = "From: $from"; $file = fopen($fileatt, 'rb'); $data = fread($file, filesize($fileatt)); fclose($file); $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; $message = "This is a multi-part message in MIME format.\n\n" . "-{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message .= "\n\n"; $data = chunk_split(base64_encode($data)); $message .= "–{$mime_boundary}\n" . "Content-Type: {$fileatttype};\n" . " name=\"{$fileattname}\"\n" . "Content-Disposition: attachment;\n" . " filename=\"{$fileattname}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "-{$mime_boundary}-\n"; if (mail($to, $subject, $message, $headers)) { echo "The email was sent."; } else { echo "There was an error sending the mail."; } //============================================================+ // END OF FILE //============================================================+
你可以用:
$fileatt = $pdf->输出(‘quotation.pdf’,’E’);
选项E:将文档作为base64 mime多部分电子邮件附件(RFC 2045)返回,我发现此信息: tcpdf documentation
之后你只需要这样做:
$data = chunk_split($fileatt);
并且您的文件已准备好附加到邮件,无需使用文件.只需保留标题和其他设置即可完成工作.
要么
2.您可以使用F将其保存在服务器上,然后获取如下数据:
$filename = location_on_server.“quotation.pdf”;
$fileatt = $pdf->输出($filename,’F’);
$data = chunk_split(base64_encode(file_get_contents($filename)));
翻译自:https://stackoverflow.com/questions/6689567/sending-an-email-attachment-using-tcpdf
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 附件在线预览组件 WDA 1.2.3 发布,支持通过 url 预览附件
- SpringBoot实现发送电子邮件
- 绕过电子邮件格式过滤进行SQL注入
- javascript – 类型电子邮件不支持selectionrange
- 在电子邮件正文中应用HTML格式
- 防止电子邮件网络钓鱼攻击的10种方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JSON 在线解析
在线 JSON 格式化工具
HTML 编码/解码
HTML 编码/解码