是否可以通过电子邮件生成和发送pdf文件,而无需在本地或服务器上保存pdf文件

时间:2016-11-21 17:04:26

标签: php email pdf

我正在使用fpdf生成pdf文件,该文件包含标题以及使用post方法收集的表单中的相应用户输入。我想将此pdf附加到电子邮件中,以便将其发送给用户。我将使用phpMailer来做到这一点。我想知道是否可以给pdf一个名称,以便它可以附加到电子邮件,但pdf不会保存在服务器或用户本地计算机上。

下面的代码循环遍历headers数组和表单数据。然后它将它写入pdf。我已经将一个静态pdf文件吸引到附件参数,这只是为了测试pdf文件是否通过电子邮件发送。

代码

<?php 
require('fpdf.php');
require_once('mail/class.phpmailer.php');
?>
<?php


if(isset($_POST['submit'])) {


$pdf = new FPDF();
$pdf->AddPage();


$headers = ['first name', 'last name'];

$i = 0;

foreach($_POST as $k => $v) {
if($k == 'submit') continue;


$pdf->SetFont('Arial','B',16);
$pdf->write(40,$headers[$i++]);
$pdf->ln(10);
$pdf->write(40,"$v");
$pdf->ln(10);
$content = $pdf->Output('doc.pdf','F');
}
//$bodytext ='jdjdjdjdjd';
//$email = new PHPMailer();
//$email->From      = 'example@hotmail.co.uk';
//$email->FromName  = 'example';
//$email->Subject   = 'PDF AddAttachment';
//$email->Body      = $bodytext;
//$email->AddAddress( 'destination@hotmail.co.uk' );

//$file_to_attach = 'file/my.pdf';

//$email->AddAttachment( $file_to_attach , 'my.pdf' );

//return $email->Send();

//$pdf->Output();

}
?>

2 个答案:

答案 0 :(得分:3)

FPDF有一个输出函数,可以生成编码的String。 见http://www.fpdf.org/en/doc/output.htm

PHPMailer可以添加Strings的附件。

所以它的

$content = $pdf->Output('S');
$email->addStringAttachment($content, 'my.pdf');

那很简单。

答案 1 :(得分:-1)