好吧,這是我的第一個線程,我在網上搜索但沒有運氣。 我正在做一個實習,我正在開發一個項目,需要我創建一個網頁,當用戶提交他/她的信息時生成一個pdf文件。只要客戶點擊提交按鈕,3件事情需要發生:使用PHP發送PDF文件附件的電子郵件
- 存儲信息數據庫(完成),
- 發送員工一封電子郵件,新客戶的信息(已完成),以及
- 向客戶發送一封帶有pdf文件附件(不工作)的「thank you message」郵件。
我的意思是,客戶沒有收到一封電子郵件,但是當他/她打開PDF文件時,我收到以下錯誤信息:
「的Acrobat不能OEN‘FILE_NAME’,因爲它是要麼是不支持的文件類型,要麼是因爲文件已損壞(例如,它是作爲電子郵件附件發送的,未正確解碼)...「
請注意,這是我的最後時間做一個創建PDF文件附件的項目。如果有人能幫我解決這個問題,那就太好了。謝謝!
這裏是我的代碼:
<?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);
}
}
?>
我注意到,你有應用程序/壓縮。嘗試應用程序/ pdf。 – Raisen
我也是這樣做的,但它不起作用。 –
還沒有適當考慮它,但是IIRC MIME頭文件的eol始終是「\ r \ n」,「PHP_EOL」中的實際值取決於操作系統;這可能會把一個扳手放在你的$ headers var;雖然根據規範它應該是寬容的:http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html(19.3) – CD001