Задать вопрос
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" т.к. у меня визуальный редактор глючит))))Бред,но все же...
  • Вопрос задан
  • 809 просмотров
Подписаться 1 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
sabramovskikh
@sabramovskikh
А сами как думаете? Файлы через AJAX не передаются, только тексты.
Ищите AJAX загрузка файлов, там используюся костыли, типа фреймов
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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