Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.04.2016, 19:16
Профессор
Отправить личное сообщение для Batyabest Посмотреть профиль Найти все сообщения от Batyabest
 
Регистрация: 14.09.2013
Сообщений: 252

AJAX отправка файлов на почту
Почему-то не приходят вложения в письмах - сами письма приходят, а вложений нет.

Вот разметка и скрипты

$('#proj_form').submit(function(event) {
        event.preventDefault();
        var formValid = true;
        $('#proj_form input,textarea').each(function() {
          if ($(this).attr('id') == 'text-captcha') { return true; }
          var formGroup = $(this).parents('.form-group');
          var glyphicon = formGroup.find('.form-control-feedback');
          if (this.checkValidity()) {
            formGroup.addClass('has-success').removeClass('has-error');
            glyphicon.addClass('glyphicon-ok').removeClass('glyphicon-remove');
          } else {
         	formGroup.addClass('has-error').removeClass('has-success');
    	    glyphicon.addClass('glyphicon-remove').removeClass('glyphicon-ok');
    	    formValid = false;  
          }
        });
    
    	  var name = $("#proj_name").val();
          var phone = $("#proj_phone").val();
          var time = $("#proj_time").val();
          var message = $("#proj_message").val();
          var captcha = $("#proj-captcha").val();
      var file_data = $('#proj_image').prop('files')[0];  
      var form_data = new FormData();                  
      form_data.append('file', file_data);
      form_data.append('name', name);
      form_data.append('email', email);
      form_data.append('message', message);
      form_data.append('captcha', captcha);
          $.ajax({
            type: "POST",
            url: "feedback/send_proj.php",
    			data: form_data,
    			contentType: false,
    			processData: false,
    			cache: false,
            success : function(text){
              if (text == "success"){
                $('#proj_form').hide();
                $('#msgSubmit_proj').removeClass('hidden');
              }
    	      if (text == "invalidcaptcha") {
    		    inputCaptcha = $("#text-captcha");
                formGroupCaptcha = inputCaptcha.parents('.form-group');
                glyphiconCaptcha = formGroupCaptcha.find('.form-control-feedback');
                formGroupCaptcha.addClass('has-error').removeClass('has-success');
                glyphiconCaptcha.addClass('glyphicon-remove').removeClass('glyphicon-ok');
    			$('#img-captcha').attr('src', 'feedback/captcha.php?id='+Math.random()+'');
    			$("#text-captcha").val('');
    	      }
            }
          }); 
      });


Форма

<form id="proj_form" enctype="multipart/form-data">
      <div class="form-group col-xs-8 col-xs-offset-2">
        <label for="name" class="control-label">Имя*</label>
         <input type="text" class="form-control" id="proj_name" required/>
      </div>
      <div class="form-group col-xs-8 col-xs-offset-2">
        <label for="phone" class="control-label">Телефон*</label>
          <input type="text" class="form-control" id="proj_phone" required/>
      </div>
      <div class="form-group col-xs-8 col-xs-offset-2">
        <label for="time" class="control-label">Время звонка</label>
          <input type="text" class="form-control" id="proj_time"/>
      </div>
      <div class="form-group col-xs-8 col-xs-offset-2">
        <label for="email" class="control-label">Сообщение</label>
          <textarea id="proj_message" class="form-control" rows="3"></textarea>
      </div>
      <div class="form-group col-xs-8 col-xs-offset-2">
        <label for="email" class="control-label">Прикрепите файлы проекта</label>
    		<input type="file" name="image" id="proj_image" value="">
      </div>
      <div class="form-group col-xs-8 col-xs-offset-2">
          <button type="submit" class="btn btn-success send_but">Отправить</button>
      </div>
    </form>


Скрипт обработчика

session_start();
    $name = $_POST["proj_name"];
    $phone = $_POST["proj_phone"];
    $time = $_POST["proj_time"];
    $message = $_POST["proj_message"];
    
      $emailTo = "email@email.ru";
      $subject = "Тема письма";
      $body = "--------------------------------------\n";
      $body .= date("Y.m.d H:i")."\n";
      $body .= "Содержимое заполненных пользователем полей:\n";
      $body .= "Имя: ".$name."\n";
      $body .= "Телефон: ".$phone."\n";
      $body .= "Время звонка: ".$time."\n";
      $body .= "Сообщение: \n".$message."\n";
      $body .= "Сообщение: \n".$file."\n";
    $sourcePath = $_FILES['file']['tmp_name'];
    if ( 0 < $_FILES['file']['error'] ) {
      echo 'Error: ' . $_FILES['file']['error'] . '';
    }
    else {
      move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name']);
    }
      $success = mail($emailTo, $subject, $body, "From: noreply@email.ru \r\n");
      if ($success) {
        echo "success";
      }
      else {
        echo "invalid";
      }
Ответить с цитированием
  #2 (permalink)  
Старый 23.04.2016, 13:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Batyabest
сами письма приходят, а вложений нет
Ну так их в самом отправлении нет.
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2016, 12:01
Профессор
Отправить личное сообщение для Batyabest Посмотреть профиль Найти все сообщения от Batyabest
 
Регистрация: 14.09.2013
Сообщений: 252

А где именно ошибка у меня? Я в форме добавляю файл, но на почту он не приходит((
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2016, 12:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Batyabest
А где именно ошибка у меня?
Если говорить об ошибках, то:

1) Так почтовые отправления не оформляют, не буду говорить как, просто уже не охота в N-ый раз повторять одно и тоже, но не беда, в сети об этом написано масса, найдите и ознакомтесь.

2) Загрузку файлов начинают не с move_uploaded_file($_FILES['file']['tmp_name']..., а с проверки ключа $_FILES['file']['error'], и только в случае его значения равного 0, а также возможно и других пользовательских условий, можно перемещать файл из временного каталога в каталог документов.

Сообщение от Batyabest
Я в форме добавляю файл, но на почту он не приходит((
Форма к почтовому отправлению отношения не имеет. Если бы иначе, то это было бы равноценно тому, чтобы в описании отправления не указывать $name = $_POST["proj_name"]; и др., а зачем, форма же отправлена.

Отправление с вложением, это уже multipart формат, в котором вложение описано в своем разделе, и которое считывается (в данном случае файл полученный формой), кодируется в base64 с разбиением на фиксированные строки и добавляется в тело сообщения - attachment.
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2016, 17:47
Профессор
Отправить личное сообщение для Batyabest Посмотреть профиль Найти все сообщения от Batyabest
 
Регистрация: 14.09.2013
Сообщений: 252

неужели трудно нормально написать без пафоса в голосе?
Я спросил почему не отправляется и мне не интересно как правильно оформляются отправления и т.д. можно просто написать что этой то строке нужно так а не иначе.
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2016, 18:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Batyabest
неужели трудно нормально написать без пафоса в голосе?
И где пафос?

Сообщение от Batyabest
спросил почему не отправляется и мне не интересно как правильно оформляются отправления и т.д.
Я ответил почему - не прикрепляются файлы к письму, а как это делается в любом руководстве по РНР рассказано, что мне пересказывать и переписывать это? То что они помещены в форму, не означает автоматом их отправление.

А если не интересно знать, ну так к чему тогда вообще пояснять?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax и отправка файлов с формы miker059 jQuery 5 10.01.2018 03:12
Отправка формы после ajax проверки ShutTap Общие вопросы Javascript 15 08.04.2016 11:46
Отправка данных формы. Как выглядит структура метода с AJAX (по JQuery)? Coriolan161 AJAX и COMET 5 24.11.2015 20:17
ajax + php + json + отправка на почту roma88 AJAX и COMET 5 22.08.2014 15:22
Загрузка БОЛЬШИХ файлов посредством ajax barcelona jQuery 7 12.10.2012 03:37