Как отправить несколько изображений через ajax на почту?

Доброго дня! Проблем с отправкой на сервер одного изображения в форме нет, но вот несколько... Доходит в итоге только одно. Подскажите, пожалуйста, как исправить массив files, чтобы доходили все изображения.
<form class="form-horizontal form" method="post" action enctype="multipart/form-data" id="commentForm">
	<fieldset>
	<div class="form-group">
	<div class="col-md-6">
	  <label class="control-label" for="name">Имя *</label>  	  
	  <input id="name" name="name" type="text" placeholder="" class="form-control input-md" required="">		
	  </div>
	  <div class="col-md-6">
	  <label class="control-label" for="surname">Фамилия *</label>  	  
	  <input id="surname" name="surname" type="text" placeholder="" class="form-control input-md" required="">		
	  </div>
	</div>
		<div class="form-group">
		  <label class="col-md-4 control-label" for="file">Пожалуйста, вложите ваши фотографии:</label>
		  <div class="col-md-4">
			<input id="file" name="file" class="input-file" accept="image/jpeg,image/png" type="file"  multiple="multiple">
		  </div>
		</div>
	</fieldset>
		<div class="form-group">
			<input id="button" name="submit"  class="input-submit submit" type="submit" value="Отправить">
			<p class="center_bold">&nbsp;</p>
		</div>
</form>

Код ajax
jQuery(document).ready(function() {
	$("#commentForm").submit(function() { return false; });				
	$("#button").on("click", function(){				
		var form = document.forms.commentForm;
		var formData = new FormData(form);  

		var xhr = new XMLHttpRequest();
		xhr.open("POST", "mail.php");

		xhr.onreadystatechange = function() {
			if (xhr.readyState == 4) {
				if(xhr.status == 200) {
					data = xhr.responseText;
					if(data == "true") {
						$(".center_bold").fadeOut("slow", function(){
							$(this).before("<p class='invin'>Ваша заявка успешно отправлена!</p>");									
						});
					} else {
						$(".sending").replaceWith("<p >Ошибка! Обновите страницу...<p>");
					}
				}
			}
		};		
		xhr.send(formData);		
	});
});

Сам mail.php
function mail_attachment($filename, $mailto, $from_mail, $from_name, $replyto, $subject, $message) 
{
 foreach($_FILES as $file) {
    $file = $filename;
    $file_size = filesize($file);
    $handle = fopen($file, "r");
    $content = fread($handle, $file_size);
    fclose($handle);
    $content = chunk_split(base64_encode($content));
    $uid = md5(uniqid(time()));
    $name = basename($file);
    $header = "From: ".$from_name." <".$from_mail.">\r\n";
    $header .= "Reply-To: ".$replyto."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    $header .= "This is a multi-part message in MIME format.\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-type:text/plain; charset=utf-8 \r\n";
    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $header .= $message."\r\n\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; 
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $header .= $content."\r\n\r\n";
    $header .= "--".$uid."--";
    return mail($mailto, $subject, "", $header);    
}	
}

$sendto   = "mail@mail.ru"; 		
$name = $_POST['name'];		
$surname = $_POST['surname'];
$subjectuser  = "Сообщение";
$headersuser  = "From: Сообщение\r\n";
$headersuser .= "Reply-To: ". strip_tags($useremail) . "\r\n";
$headersuser .= "MIME-Version: 1.0\r\n";
$headersuser .= "Content-Type: text/html;charset=utf-8 \r\n";
$my_file = "";
if (!empty($_FILES['file']['tmp_name'])) 
 {
$path = $_FILES['file']['name']; 
if (copy($_FILES['file']['tmp_name'], $path)) $my_file = $path; 
 }			
$my_name = "Анкета"; 					
$my_mail = "mail@mail.ru"; 						
$my_replyto = "mail@mail.ru";
$my_message = "Личная информация\r\nИмя: ".$name."\r\nФамилия: ".$surname."\r\n";

if(@mail_attachment($my_file, $sendto, $my_mail, $my_name, $my_replyto, $subjectuser, $my_message)){
		echo "true";
} else {
	echo "false";
}

?>
  • Вопрос задан
  • 2881 просмотр
Пригласить эксперта
Ответы на вопрос 2
EnterSandman
@EnterSandman
Эникей
Да какой там парк. Тут велопроизводство.

Для начала почитайте как происходит отправка письма в plaintext
дальше смотрите
foreach($_FILES as $file) {
дальше надо подготовить ваши аттачи. у каждого будет свой boundary, у вас же он готовится один

php.spb.ru/php/mail.html - вот это почитайте
mrrico.livejournal.com/4092.html - вот это

вообще, там ничего сложного.
Ответ написан
Комментировать
AMar4enko
@AMar4enko
Да у вас тут прям велосипедный парк!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы