Aderus
@Aderus

Почему не приходит вложенный файл на e-mail?

Здравствуйте! Почему не приходят вложения (картинки) в письме? Главное приходят данные типа имя,email,телефон и т.д. ,а вложенный файл нет.

Имеем форму:
<form action="" class="slider-form" id="formMain" method="post" name="formMain">
<input class="w100 border" id="nameFF" name="nameFF" placeholder="например, Иван Иванович Иванов" required="" type="text" x-autocompletetype="name" />
<input class="w100 border" id="contactFF" name="contactFF" placeholder="например, ivan@yandex.ru" required="" type="email" x-autocompletetype="email" />
<label for="fileFF">Прикрепить файл:</label>
<input class="w100" id="fileFF" multiple="multiple" name="fileFF[]" type="file" />
<input class="button-submit" id="button-post" type="button" value="Отправить" />
</form>


Далее идет типа Ajax:
$("#button-post").click(function () {
                $.ajax({
                    url:      "/feedback/post.php",
                    type:     "POST",
                    dataType: "html",
                    data: jQuery("#"+formMain).serialize(), 
                    success: function(response) {
                    document.getElementById(result_id).innerHTML = response;
                },                
             }); 			
							 
    }


Далее php:
<?php
if (isset ($_POST['contactFF'])) {
  $to = "dadada@mail.ru"; // поменять на свой электронный адрес
  $from = $_POST['contactFF'];
  $subject = "Заполнена контактная форма с ".$_SERVER['HTTP_REFERER'];
  $message = "Имя: ".$_POST['nameFF']."\nEmail: ".$from."\nIP: ".$_SERVER['REMOTE_ADDR'];
  $boundary = md5(date('r', time()));
  $filesize = '';
  $headers = "MIME-Version: 1.0\r\n";
  $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
  $message="
Content-Type: multipart/mixed; boundary=\"$boundary\"

--$boundary
Content-Type: text/plain; charset=\"utf-8\"
Content-Transfer-Encoding: 7bit

$message";
  for($i=0;$i<count($_FILES['fileFF']['name']);$i++) {
     if(is_uploaded_file($_FILES['fileFF']['tmp_name'][$i])) {
         $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'][$i])));
         $filename = $_FILES['fileFF']['name'][$i];
         $filetype = $_FILES['fileFF']['type'][$i];
         $filesize += $_FILES['fileFF']['size'][$i];
         $message.="

--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"

$attachment";
     }
   }
   $message.="
--$boundary--";

  if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
    mail($to, $subject, $message, $headers);
    echo $_POST['nameFF'].', Ваше сообщение получено, спасибо!';
  } else {
    echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
  }
}
?>

Что тут не так? Почему прикрепленный файл не появляется в письме?
Заранее спасибо.

P.S. может у кого пример есть. Но тут есть проблема....я специально не использовал type="submit" т.к. у меня визуальный редактор глючит))))Бред,но все же...
  • Вопрос задан
  • 776 просмотров
Пригласить эксперта
Ответы на вопрос 1
sabramovskikh
@sabramovskikh
А сами как думаете? Файлы через AJAX не передаются, только тексты.
Ищите AJAX загрузка файлов, там используюся костыли, типа фреймов
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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