I wo开发者_JAVA百科uld like to email the filled form after submit button clicked without prompting outlook or any mail. How could it be done?
Your form can submit to a URL on your website. The script at that URL can capture the form contents and mail it out using an SMTP server. It is no different than using an HTML form, some people like PDF forms. PDF forms can be downloaded, filled, printed and then presented manually or by snail mail.
I created the PDF form and added a button which then submits form. In the actions of this submit form, I told it to PDF the complete document.
Then I gave it a URL link to a php page, such as mail_my_form.php
Then I created a PHP form, and named it the same as above, mail_my_form.php.
One last thing is to create a folder called pdfs
in the root of where this php code will go. (So if you put the php in a folder called email, then inside the folder of email, you need another folder called pdfs.)
Now what this script does is:
- Saves the PDF to the file name pdfs.
- Then it attaches the file to an email and sends it.
- Then it deletes the file from the folder pdfs to save space. (You could take out the delete function to save your forms on your FTP also if you wanted to.)
Here it is.
$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!");
}
精彩评论