I have been trying to get php to send a email with a attached PDF, I have been looking everywhere and came across this post Email PDF Attachment with PHP Using FPDF.
I tried the solution but still no luck, does anyone know where I am going wrong? I get no errors or email?
Basically what this is doing is grabbing values from a form, putting them into a database then sending a email to them.
Any help would be greatly appreciated.
require('fpdf.php'); include("database.php"); require_once('recaptchalib.php'); $publickey = "6LcBYNsSAAAAAKkf5LwKkrhTVTVlxmOblcOn70-r "; $privatekey = " 6LcBYNsSAAAAAEAa9wFZfyjInRmsWCxpj79Nvqm7"; // email stuff (change data below) $to = "[email protected]"; $from = "[email protected]"; $subject = "send email with pdf attachment"; $message = "<p>Please see the attachment.</p>"; // PDF Create $pdf = new FPDF('P', 'pt', array(500,233)); $pdf->AddPage(); $pdf->SetFont('Arial','B',16); $pdf->Cell(40,10,'Hello World!'); // 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 = "test.pdf"; // encode data (puts attachment in proper format) $pdfdoc = $pdf->Output("", "S"); $attachment = chunk_split(base64_encode($pdfdoc)); // main header $headers = "From: ".$from.$eol; $headers .= "MIME-Version: 1.0".$eol; $headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\""; // no more headers after this, we start the body! // $body = "--".$separator.$eol; $body .= "Content-Transfer-Encoding: 7bit".$eol.$eol; $body .= "This is a MIME encoded message.".$eol; // message $body .= "--".$separator.$eol; $body .= "Content-Type: text/html; charset=\"iso-8859-1\"".$eol; $body .= "Content-Transfer-Encoding: 8bit".$eol.$eol; $body .= $message.$eol; // attachment $body .= "--".$separator.$eol; $body .= "Content-Type: application/octet-stream; name=\"".$filename."\"".$eol; $body .= "Content-Transfer-Encoding: base64".$eol; $body .= "Content-Disposition: attachment".$eol.$eol; $body .= $attachment.$eol; $body .= "--".$separator."--"; // form values $firstname = $_POST['first']; $lastname = $_POST['last']; $postcode = md5($_POST['post']); $email = $_POST['email']; if ($_POST["recaptcha_response_field"]) { $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if ($resp->is_valid) { $check = mysql_query("SELECT * FROM voucher WHERE first='$firstname' AND last='$lastname'"); if(mysql_num_rows($check) != 0) { echo "<p>Voucher already in use.</p>"; } else { $insert = 'INSERT into voucher(first, last, postcode, email) VALUES ("'.$firstname.'","'.$lastname.'","'.$postcode.'","'.$email.'")'; mysql_query($insert); // send message mail($to, $subject, $message, $headers) or die("Mail Error"); echo "<p>Voucher has been emailed, we looked foward to seeing you soon</p>"; } } else { echo "The anti spam code you entered is not correct."; } }
mail()function to create complex emails???? For the hundreth time, use a decent mailer class like phpMailer for this kind of thing, and save yourself hours of frustration.