2014-12-14 4 views
0

Я хотел бы объединить или связать код FPDF и PHPMailer, чтобы документ был сгенерирован и отправлен по электронной почте. Я не хочу сохранять файл. Я не могу найти решение. Ниже приведен рабочий код для 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 = '[email protected]'; 
$mail->FromName = 'John Doe'; 
$mail->AddAddress('[email protected]', ''); // 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'; 

ответ

3

Заменить $fpdf->Output('Filename.pdf', 'i'); на $fpdf->Output('Filename.pdf', 'S');, чтобы сохранить PDF на жестком диске вместо отправляя его непосредственно в браузер (как объясняется в the doc).

Затем вызовите код FPDF для создания файла PDF в начале или перед кодом PHPmailer.php, замените $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 вы только что поделен.

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