how to send pdf email using mpdf?

A Mohammed Hussain picture A Mohammed Hussain · Sep 19, 2012 · Viewed 7.6k times · Source

My sample coding to create pdf using mpdf is, (it works fine)

    <? require_once('../mpdf.php');

$mpdf = new mPDF();

$mpdf->WriteHTML('<p>Your first taste of creating PDF from HTML</p>');

$mpdf->Output();
exit;

?>

My sample coding to send email:

    $em =//email address ;
    $subject = //subject;
    $message = //message;

    mail($em, $subject, $message, "From: MyDomain Webmaster<[email protected]>\nX-Mailer: PHP/" . phpversion());

My problem is that the pdf is created and is opened in the browser directly, how can send the pdf file as email attachment?

If possible please help me with the code or just help me with some suggestions, I will code it myself.

Thanks!

Answer

HAW picture HAW · Sep 16, 2018

From The Wayback Machine (link above): https://web.archive.org/web/20151004121531/http://mpdf1.com/manual/index.php?tid=373

<?php

include("../mpdf.php"); //Include mPDF Class 

$mpdf=new mPDF(); // Create new mPDF Document

//Beginning Buffer to save PHP variables and HTML tags
ob_start(); 

// Function Date
$day = date('d');
$month = date('m');
$year = date('Y');

switch ($month)
{ 
case 1: $month = "January"; break;
case 2: $month = "February"; break;
case 3: $month = "March"; break;
case 4: $month = "April"; break;
case 5: $month = "May"; break;
case 6: $month = "June"; break;
case 7: $month = "July"; break;
case 8: $month = "August"; break;
case 9: $month = "September"; break;
case 10: $month = "October"; break;
case 11: $month = "November"; break;
case 12: $month = "December"; break;
}

echo "Hello World
Today is $month $day, $year";

$html = ob_get_contents();
ob_end_clean();
//Here convert the encode for UTF-8, if you prefer the ISO-8859-1 just change for $mpdf->WriteHTML($html);
$mpdf->WriteHTML(utf8_encode($html)); 

$content = $mpdf->Output('', 'S');

$content = chunk_split(base64_encode($content));
$mailto = '[email protected]'; //Mailto here
$from_name = 'ACME Corps Ltd'; //Name of sender mail
$from_mail = '[email protected]'; //Mailfrom here
$subject = 'subjecthere'; 
$message = 'mailmessage';
$filename = "yourfilename-".date("d-m-Y_H-i",time()); //Your Filename with local date and time

//Headers of PDF and e-mail
$boundary = "XYZ-" . date("dmYis") . "-ZYX"; 

$header = "--$boundary\r\n"; 
$header .= "Content-Transfer-Encoding: 8bits\r\n"; 
$header .= "Content-Type: text/html; charset=ISO-8859-1\r\n\r\n"; // or utf-8
$header .= "$message\r\n";
$header .= "--$boundary\r\n";
$header .= "Content-Type: application/pdf; name=\"".$filename."\"\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n\r\n";
$header .= "$content\r\n"; 
$header .= "--$boundary--\r\n";

$header2 = "MIME-Version: 1.0\r\n";
$header2 .= "From: ".$from_name." \r\n"; 
$header2 .= "Return-Path: $from_mail\r\n";
$header2 .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header2 .= "$boundary\r\n";

mail($mailto,$subject,$header,$header2, "-r".$from_mail);

$mpdf->Output($filename ,'I');
exit;

?>