我想合并或链接FPDF和PHPMailer代码,以便生成文档并通过电子邮件发送。我不想保存文件。我无法找到解决方案。下面是FPDF和PHPMailer的工作代码。无法将两者合并在一起。
FPDF网站说要做到这一点
$mail = new PHPMailer();
...
$doc = $pdf->Output('', 'S');
$mail->AddStringAttachment($doc, 'doc.pdf', 'base64', 'application/pdf');
$mail->Send();
FPDF代码:
require_once('fpdf/fpdf.php');
$fpdf = new FPDF();
$text="test";
$fpdf->SetMargins(0, 0, 0);
$fpdf->SetAutoPageBreak(true, 0);
define('FPDF_FONTPATH', 'font/');
$fpdf->AddFont('Verdana', '','verdana.php'); // Standard Arial
$fpdf->addPage('L');
$fpdf->Image('images/certificate.jpg', 0, 0, 297, 210);
$fpdf->SetFont('Verdana', '');
$fpdf->SetFontSize(28);
$fpdf->SetTextColor(32, 56, 100);
$fpdf->SetXY(108, 52); //
$fpdf->Cell(80, 6, $text, 0,0, 'C');
$fpdf->Output('Filename.pdf', 'i');
PHPMailer代码:
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->IsSMTP(); // Set mailer to use SMTP
$mail->Host = 'gator3095'; // Specify main and backup server
$mail->Port = 587; // Set the SMTP port
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'username'; // SMTP username
$mail->Password = 'password'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
$mail->From = 'test@hotmail.com.com';
$mail->FromName = 'John Doe';
$mail->AddAddress('recipient@hotmail.com', ''); // Add a recipient
$mail->IsHTML(true); // Set email format to HTML
$mail->Subject = 'subject';
$mail->Body = 'message body';
$mail->AltBody = 'messge body';
$mail->AddAttachment("c:/temp/test.php", "test.php");
if(!$mail->Send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}
echo 'Message has been sent';
答案 0 :(得分:3)
将$fpdf->Output('Filename.pdf', 'i');
替换为$fpdf->Output('Filename.pdf', 'S');
以将PDF保存在硬盘上,而不是直接将其发送到浏览器(如the doc中所述)。
然后调用您的FPDF代码在PHPmailer.php代码的开头或之前生成PDF文件,将$mail->AddAttachment("c:/temp/test.php", "test.php");
替换为$mail->AddAttachment("[...the exact place where your file is..]/Filename.pdf", "Filename.pdf");
最后,在您上次回复之前,添加unlink('Filename.pdf');
以删除您刚发送的临时PDF文件。