简体   繁体   English

将PDF填写表格提交给PHP脚本,然后通过电子邮件将PDF作为附件发送

[英]Submit PDF filled form to PHP script then email PDF as an attachment

I have this script that it was posted a while back and it works, but ... In Safari works find (goes through the browser) not problem. 我有这个脚本,它发布了一段时间,并且可以运行,但是...在Safari上可以找到(通过浏览器)问题。 FireFox & Opera forces you to open Acrobat reader. FireFox和Opera会强制您打开Acrobat Reader。 When you submit from Acrobat Reader (stand along) the php script submits sends the email with attachment but Acrobat Reader hangs "receiving data..." then times out. 当您从Acrobat Reader(站着)提交时,PHP脚本提交会发送带有附件的电子邮件,但Acrobat Reader会挂起“正在接收数据...”,然后超时。 Email with attachment work fine. 带有附件的电子邮件可以正常工作。 Chrome opens within browser submits the pdf but stays on the pdf page does not redirect. Chrome在浏览器中打开时提交pdf但停留在pdf页面上不会重定向。 The attachment send from Chrome comes in the email but it is empty, the pdf file does not open. Chrome发送的附件包含在电子邮件中,但为空,pdf文件无法打开。 My question is: What is Acrobat Reader waiting to receive? 我的问题是:Acrobat Reader正在等待接收什么? and What is going on with Chrome? 以及Chrome发生了什么?

Here is the code 这是代码

$fileatt = date("d-m-Y-His") . ".pdf";  // Creates unique PDF name from the date 
copy('php://input',"pdfs/".$fileatt); // Copies the pdf form data to a folder named pdfs 
$fileatt = "pdfs/".$fileatt; // Path to the file gives the pdfs folder plus the unique       file name we just assigned
$fileatt_type = "application/pdf"; // File Type 
$fileatt_name = "Application Form_".$fileatt.".pdf"; // Filename that will be used for the   file as the attachment when it is sent

$email_from = "mywebsite"; // Who the email is from 
$email_subject = "Completed online Applications"; // The Subject of the email 
$email_message = "Please find a recent online application attached.
";
$email_message .= "Any problems please email me...
"; // Message that the email has in it 

$email_to = "youremail@yourserver.com"; // Who the email is to 

$headers = "From: ".$email_from;

//no need to change anything else under this point

$file = fopen($fileatt,'rb'); 
$data = fread($file,filesize($fileatt)); 
fclose($file); 

$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

$headers .= "\nMIME-Version: 1.0\n" . 
"Content-Type: multipart/mixed;\n" . 
" boundary=\"{$mime_boundary}\""; 

$email_message .= "This is a multi-part message in MIME format.\n\n" . 
"--{$mime_boundary}\n" . 
"Content-Type:text/html; charset=\"iso-8859-1\"\n" . 
"Content-Transfer-Encoding: 7bit\n\n" . 
$email_message .= "\n\n"; 

$data = chunk_split(base64_encode($data)); 

$email_message .= "--{$mime_boundary}\n" . 
"Content-Type: {$fileatt_type};\n" . 
" name=\"{$fileatt_name}\"\n" . 
//"Content-Disposition: attachment;\n" . 
//" filename=\"{$fileatt_name}\"\n" . 
"Content-Transfer-Encoding: base64\n\n" . 
$data .= "\n\n" . 
"--{$mime_boundary}--\n"; 

$ok = @mail($email_to, $email_subject, $email_message, $headers); 

if($ok) { 
  unlink($fileatt); //NOW WE DELETE THE FILE FROM THE FOLDER pdfs 
  Header("Location: nextpage.php"); //where do we go once the form has been submitted.

} else { 
  die("Sorry but the email could not be sent. Please go back and try again!"); 
} 

Acrobat Reader is waiting for data... any data. Acrobat Reader正在等待数据...任何数据。 Echo something which acknowledges receipt of the form. 回显确认已收到表格的内容。 Chrome is sending an FDF, not a PDF. Chrome正在发送FDF,而不是PDF。 I don't think the attachment would actually be empty, but it's got to be able to open the PDF referred to in the FDF. 我认为附件实际上不会为空,但是必须能够打开FDF中引用的PDF。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM