Sending Email Using Attached PDF Files Using PHP

Ok guys, this is my first stream, and I searched the Internet, but no luck. I do internship and I am working on a project that requires me to create a web page that generates a pdf file when a user submits his information. As soon as the client clicks the submit button, 3 things should happen:

  • Store information in a database (done),
  • Send employees an email with information about new customers (done) and
  • Send a letter of thanks with the attached pdf file to the client (does not work).

I mean, the client receives the email, but when he opens the pdf file, the following error message appears:

"Acrobat cannot specify the file name" file "because it is either an unsupported file type or because the file is damaged (for example, it was sent as an email attachment and was incorrectly decoded) ...

Please keep in mind that this is my time when I am doing a project to create an application in a pdf file. If someone can help me solve this problem, it will be great. Thanks!

Here is my code:

<?php // once there are no errors, as soon as the customer hits the submit button, it needs to send an email to the staff with the customer information $msg = "Name: " .$_POST['name'] . "\n" ."Email: " .$_POST['email'] . "\n" ."Phone: " .$_POST['telephone'] . "\n" ."Number Of Guests: " .$_POST['numberOfGuests'] . "\n" ."Date Of Reunion: " .$_POST['date']; $staffEmail = "staffinfo"; mail($staffEmail, "You have a new customer", $msg); // using the mail php function to send the email. mail(to, subject line, message) //once the customer submits his/her information, he/she will receive a thank you message attach with a pdf file. $pdf=new FPDF(); $pdf->AddPage(); $pdf->SetFont("Arial", "B", 16); $pdf->Cell(40, 10, "Hello World!"); // email information $to = $_POST['email']; $from = $staffEmail; $subject = "Thank you for your business"; $message = "Thank you for submitting your information!"; // a random hash will be necessary to send mixed content $separator = md5(time()); // carriage return type (we use a PHP end of line constant) $eol = PHP_EOL; // attachment name $filename = "yourinformation.pdf"; // encode data (puts attachment in proper format) $pdfdoc = $pdf->Output("", "S"); $attachment = chunk_split(base64_encode($pdfdoc)); // encode data (multipart mandatory) $headers = "From: ".$from.$eol; $headers .= "MIME-Version: 1.0".$eol; $headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"".$eol.$eol; $headers .= "Content-Transfer-Enconding: 7bit".$eol; $headers .= "This is a MIME encoded message.".$eol.$eol; // message $headers .= "--".$separator.$eol; $headers .= "Content-Type: text/html; charsrt=\"iso-8859-1\"".$eol; $headers .= $message.$eol.$eol; // attachment $headers .= "--".$separator.$eol; //$headers .= "Content-Type: application/octet-stream; name=\"".$filename."\"".$eol; $headers .= "Content-Type: application/zip; name=\"".$filename."\"".$eol; $headers .= "Content-Transfer-Encoding: base64".$eol; $headers .= "Content-Disposition: attachment".$eol.$eol; $headers .= $attachment.$eol.$eol; $headers .= "--".$separator."--"; // send message mail($to, $subject, $message, $headers); } } ?> 
+7
source share
2 answers
 // once there are no errors, as soon as the customer hits the submit button, it needs to send an email to the staff with the customer information $msg = "Name: " .$_POST['name'] . "\n" ."Email: " .$_POST['email'] . "\n" ."Phone: " .$_POST['telephone'] . "\n" ."Number Of Guests: " .$_POST['numberOfGuests'] . "\n" ."Date Of Reunion: " .$_POST['date']; $staffEmail = "staffemail"; mail($staffEmail, "You have a new customer", $msg); // using the mail php function to send the email. mail(to, subject line, message) //once the customer submits his/her information, he/she will receive a thank you message attach with a pdf file. // creating a pdf file $pdf_filename = tempnam(sys_get_temp_dir(), "pdf"); $pdf=new FPDF(); $pdf->AddPage(); $pdf->SetFont("Arial", "B", 16); $pdf->Cell(40, 10, "Title"); $pdf->Ln(); $pdf->SetFont("Arial", "", 12); $pdf->Cell(15, 10, "Name:"); $pdf->SetFont("Arial", "I", 12); $pdf->Cell(15, 10, $_POST['name']); $pdf->Ln(); $pdf->SetFont("Arial", "", 12); $pdf->Cell(15, 10, "Email:"); $pdf->SetFont("Arial", "I", 12); $pdf->Cell(15, 10, $_POST['email']); $pdf->Ln(); $pdf->SetFont("Arial", "", 12); $pdf->Cell(15, 10, "Phone:"); $pdf->SetFont("Arial", "I", 12); $pdf->Cell(15, 10, $_POST['telephone']); $pdf->Ln(); $pdf->SetFont("Arial", "", 12); $pdf->Cell(40, 10, "Number of Guests:"); $pdf->SetFont("Arial", "I", 12); $pdf->Cell(40, 10, $_POST['numberOfGuests']); $pdf->Ln(); $pdf->SetFont("Arial", "", 12); $pdf->Cell(40, 10, "Date Of Reunion:"); $pdf->SetFont("Arial", "I", 12); $pdf->Cell(40, 10, $_POST['date']); // if file doesn't exists or if it is writable, create and save the file to a specific place if(!file_exists($pdf_filename) || is_writable($pdf_filename)){ $pdf->Output($pdf_filename, "F"); } else { exit("Path Not Writable"); } // using the phpmailer class // create a new instance called $mail and use its properties and methods. $mail = new PHPMailer(); $staffEmail = "staffemail"; $mail->From = $staffEmail; $mail->FromName = "name"; $mail->AddAddress($_POST['email']); $mail->AddReplyTo($staffEmail, "name"); $mail->AddAttachment($pdf_filename); $mail->Subject = "PDF file attachment"; $mail->Body = "message!"; // if mail cannot be sent, diplay error message //if(!$mail->Send()){ //echo "<div id=\"mailerrors\">Message could not be sent</div>"; //echo "<div id=\"mailerrors\">Mailer Error: " . $mail->ErrorInfo . "</div>"; //} else { // else...if mail is sent, diplay sent message //echo "<div id=\"mailerrors\">Message sent</div>"; //} // delete the temp file unlink($pdf_filename); } } 
+3
source

Try the following:

 <?php // once there are no errors, as soon as the customer hits the submit button, // it needs to send an email to the staff with the customer information $msg = "Name: " .$_POST['name'] . "\n" . "Email: " .$_POST['email'] . "\n" . "Phone: " .$_POST['telephone'] . "\n" . "Number Of Guests: " .$_POST['numberOfGuests'] . "\n" . "Date Of Reunion: " .$_POST['date']; $staffEmail = "staffinfo"; mail($staffEmail, "You have a new customer", $msg); // once the customer submits his/her information, he/she will receive a thank // you message attach with a pdf file. $pdf = new FPDF(); $pdf->AddPage(); $pdf->SetFont("Arial", "B", 16); $pdf->Cell(40, 10, "Hello World!"); // email information $to = $_POST['email']; $from = $staffEmail; $subject = "Thank you for your business"; $message = "Thank you for submitting your information!"; // a random hash will be necessary to send mixed content $separator = '-=-=-'.md5(microtime()).'-=-=-'; // attachment name $filename = "yourinformation.pdf"; // Generate headers $headers = "From: $from\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed; boundary=\"$separator\"\r\n" . "X-Mailer: PHP/" . phpversion(); // Generate body $body = "This is a multipart message in MIME format\r\n" . "--$separator\r\n" . "Content-Type: text/html; charset=\"iso-8859-1\"\r\n" . "\r\n" . "$message\r\n" . "--$separator\r\n" . "Content-Type: application/pdf\r\n" . "Content-Transfer-Encoding: base64\r\n" . "Content-Disposition: attachment; filename=\"$filename\"\r\n" . "\r\n" . chunk_split(base64_encode($pdf->Output("", "S")))."\r\n" . "--$separator--"; // send message mail($to, $subject, $body, $headers); 
0
source

All Articles