Ok guys, đây là chuỗi đầu tiên của tôi và tôi đã tìm kiếm trực tuyến nhưng không có may mắn. Tôi đang thực tập và tôi đang làm việc trên một dự án yêu cầu tôi tạo trang web tạo tệp pdf khi người dùng gửi thông tin của họ. Ngay sau khi khách hàng nhấp vào nút gửi, 3 điều cần phải xảy ra:Gửi email có tệp đính kèm tệp PDF bằng cách sử dụng PHP
- Lưu trữ thông tin vào cơ sở dữ liệu (thực hiện),
- Gửi các nhân viên một email với thông tin khách hàng mới (thực hiện), và
- Gửi cho khách hàng email "cảm ơn bạn" với tệp đính kèm tệp pdf (không hoạt động).
Ý tôi là, khách hàng không nhận được email, nhưng khi anh/cô ấy mở file pdf, tôi nhận được thông báo lỗi sau:
"Acrobat không thể Oen 'file_name' vì nó là hoặc không phải là một loại hỗ trợ tập tin hoặc vì các tập tin đã bị hư hỏng (ví dụ, nó đã được gửi dưới dạng đính kèm email và không được giải mã một cách chính xác) ..."
Hãy ghi nhớ đây là lần fisrt của tôi thực hiện dự án tạo tệp đính kèm tệp pdf. Nếu ai đó có thể giúp tôi giải quyết vấn đề này, điều đó sẽ rất tuyệt. Cảm ơn!
Đây là mã của tôi:
<?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);
}
}
?>
tôi nhận thấy rằng bạn có application/zip. Hãy thử ứng dụng/pdf thay thế. – Raisen
Tôi cũng làm như vậy, nhưng nó sẽ không hoạt động. –
Chưa có suy nghĩ đúng về nó nhưng IIRC eol cho tiêu đề MIME luôn là "\ r \ n" giá trị thực trong 'PHP_EOL' thay đổi tùy theo hệ điều hành; có thể đặt một cờ lê trong các tác phẩm trong $ headers var của bạn; mặc dù theo thông số kỹ thuật nó nên được khoan dung: http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html (19.3) – CD001