У меня возникли проблемы с попыткой заставить мой скрипт отправить вложение файла с информацией, собранной из формы. Я использовал форму PHP Mailer с прикрепленным файлом и модифицировал ее в соответствии со своими спецификациями. Пока он отправит информацию о форме без прикрепленного изображения, но когда я загружу изображение, оно отправит только вложение и никакую другую информацию из формы. Мне нужно, чтобы он мог отправлять информацию о форме с прикрепленным файлом или без него. Я новичок в php, поэтому я не уверен, почему он это делает.
Вот мой код
<?php if(isset($_POST['submit'])){ $sendTo = '<myemail@somesite.com'; $subject = 'Request'; $from = $_POST['email_address']; // Allowed file types. add file extensions WITHOUT the dot. $allowtypes=array("jpg", "png", "gif"); // Require a file to be attached: false = Do not allow attachments true = allow only 1 file to be attached $requirefile="true"; // Maximum file size for attachments in KB NOT Bytes for simplicity. MAKE SURE your php.ini can handel it, // post_max_size, upload_max_filesize, file_uploads, max_execution_time! // 2048kb = 2MB, 1024kb = 1MB, 512kb = 1/2MB etc.. $max_file_size="5120"; $errors = array(); //Initialize error array //Check if the file type uploaded is a valid file type. if((!empty($_FILES["attachment"])) && ($_FILES['attachment']['error'] == 0)) { // basename -- Returns filename component of path $filename = basename($_FILES['attachment']['name']); $ext = substr($filename, strrpos($filename, '.') + 1); $filesize=$_FILES['attachment']['size']; $max_bytes=$max_file_size*5120; //Check if the file type uploaded is a valid file type. if (!in_array($ext, $allowtypes)) { $errors[]="Invalid extension for your file: <strong>".$filename."</strong>"; // check the size of each file } elseif($filesize > $max_bytes) { $errors[]= "Your file: <strong>".$filename."</strong> is to big. Max file size is ".$max_file_size."kb."; } } // if !empty FILES // send an email // Obtain file upload vars $fileatt = $_FILES['attachment']['tmp_name']; $fileatt_type = $_FILES['attachment']['type']; $fileatt_name = $_FILES['attachment']['name']; // Headers $headers = 'From: '.$from = $_POST['email_address']; // create a boundary string. It must be unique $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; // Add the headers for a file attachment $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; // Add a multipart boundary above the plain message $message ="This is a multi-part message in MIME format.\n\n"; $message.="--{$mime_boundary}\n"; $message.="Content-Type: text/plain; charset=\"iso-8859-1\"\n"; $message.="Content-Transfer-Encoding: 7bit\n\n"; $message .= "Name: \t\t".$_POST['name']."\n"; $message .= "Email: \t\t".$_POST['email_address']."\n"; if($_POST['phone_number'] != ""){ $message .= "Phone: \t\t".$_POST['phone']."\n"; $message .= "Date: \t\t".$_POST['full_date']."\n"; } $message .= "\n"; if($_POST['additional_info'] != ""){ $message .= "Additional Information: \n".$_POST['additional_info']."\n"; } if (is_uploaded_file($fileatt)) { // Read the file to be attached ('rb' = read binary) $file = fopen($fileatt,'rb'); $data = fread($file,filesize($fileatt)); fclose($file); // Base64 encode the file data $data = chunk_split(base64_encode($data)); // Add file attachment to the message $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"; } // Send the completed message mail($sendTo, $subject, $message, $headers); header("Location: complete.php"); } ?>