Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Почтовый плагин, как добавить отправку файлов файлов. (https://javascript.ru/forum/css-html/82434-pochtovyjj-plagin-kak-dobavit-otpravku-fajjlov-fajjlov.html)

Mikael86 06.05.2021 08:34

Почтовый плагин, как добавить отправку файлов файлов.
 
Доброго времени суток, есть почтовый плагин

function MyMailer(nameform, valids, maxlimit){ 
  submit = $(nameform).find("button");
  max_limit = maxlimit;  


$(nameform).ready(function(){
  var inputs = $(nameform).find(":input:not([type=button]):not([type=submit]):not([type=reset])");
  id_accept = $(nameform).attr("id")+"_accept";
  id_denied = $(nameform).attr("id")+"_denied";

  accept_block = $("<div class='message' style='display:none' id='"+id_accept+"'><h5>Ваше сообщение успешно отправлено</h5></div>");
  denied_block = $("<div class='message' style='display:none' id='"+id_denied+"'><h5>Ваше сообщение не отправлено</h5></div>");
  $(nameform).append($(accept_block),$(denied_block));
  name = "";
    $.each(inputs, function (i, row) {
        name = $(row).attr('name');
        block = row;
        $.each(valids, function (x, rowin) {
            tag = rowin[0];
            if (tag == name){
            key = rowin[1];
            validator = rowin[2];
            alert = rowin[3];
            alert_block = $("<p class='error_block' style='display:none'>"+alert+"</p>"); 
            $(row).after($(alert_block))
            $(row).attr("onchange", validator+"(this)");
            }
        })
    })
///////////////////////////////////////////
  })///////////////////////////////////////
  $(submit).click(function(){
  event.preventDefault();
  errorcount = 0;  
  var inputs = $(nameform).find(":input:not([type=button]):not([type=submit]):not([type=reset]):not([type=hidden]):not([type=file])");
  name = "";
      $.each(inputs, function (i, row) {
          name = $(row).attr('name');
          block = row;
          $.each(valids, function (x, rowin) {
              tag = rowin[0];
              if (tag == name){
              key = rowin[1];
              validator = rowin[2];
              eval(validator)($(row));   
              }
          })
      })
      if (errorcount == 0){
          message = '';
          $.each(inputs, function (i, row) {
                    value = $(row).val();
                    name = $(row).attr('name');
                    block = row;
                    $.each(valids, function (x, rowin) {
                        tag = rowin[0];
                        if (tag == name){
                        key = rowin[1];
                        message = message + key +" : "+ value+"\n";
                      }
                    })
                })          

          $.ajax({
              url: '/send.php',
              type: 'post', 
              data: { message: message},
              success: function() {  
              }
          });  

$("#"+id_accept).show('slow');
setTimeout(function() { $("#"+id_accept).hide('slow'); }, 2000); 

          // console.log(message);    
          $.each(inputs, function (i, row) {
            $(row).val("");
          })
      }
      else {

$("#"+id_denied).show('slow');
setTimeout(function() { $("#"+id_denied).hide('slow'); }, 2000);
          return false;
      }
///////////////////////////////////////////
  })///////////////////////////////////////
}//////////////////////////////////////////

Есть его вызов
$(document).ready(function(){ 
$("input[name=phone]").mask('+3 (999) 999-99-99');////////подключение маски телефона

////////////////////////////////////////////////////////////////////////////////////
///////////////MAIL + ONLINE VALIDATION////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
var footer_form_validator = [ 
   ['name' , 'Имя:',       'validlitera', 'Ошибка при вводе имени!!!'],
   ['phone','Телефон:',    'validphone',  'Ошибка при вводе телефона!!!'],
   ['mail' , 'E-mail:',    'validmail',   'Ошибка при вводе E-mail!!!'],
   ['mess' , 'Сообщение:', 'validtext',   'Сообщение не заполнено']
];
MyMailer(footer_form,footer_form_validator, 15);///////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
});

Есть файл отправки
<?php 
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
// To send HTML mail, the 'Content-type' header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers  = "Content-type: text/html; charset=windows-1251 \r\n";
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
$headers = "From: Ваш сайт.net \r\n";
/////////////////////////////////////////////////////////////////

/// From - обязателен для заполнения и в него вписывается почтовый адрес отправки

$admin_mail = 'Ваш Почтовый ящик';
$subject = 'Письмо с сайта Ваш сайт.net';
$message = $_POST['message'];


mail($admin_mail, $subject, $message, $headers);
?>

И есть форма обратной связи
<form action="" id="footer_form" class="row" enctype="multipart/form-data">
	        	<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
	            <input type="text" name="name" placeholder="Ф.И.О.">
	            <input type="text" name="mail" placeholder="E-mail">
	            <input type="text" name="phone" placeholder="Телефон">
	            <input type="file" name="fileUpload[]" multiple >
	            <textarea rows="5" placeholder="Ваше сообщение" name="mess"></textarea>
	            <button type="submit" class="btn white">Отправить</button>
	        </form>

Всё отлично работает пока дело касается текста, но мне надо чтоб эта форма могла отправлять несколько файлов Exel, Word, PDF и т.д, а как это влепить в функцию MyMailer, чтоб каждый раз в PHP не лезть я себе даже не представляю.

Vlasenko Fedor 06.05.2021 10:40

Используйте готовые библиотеки для работы с почтой в php
К примеру, PHPMailer

Mikael86 06.05.2021 16:47

Спасибо за подсказку. К сожалению моих знаний не хватает понять механику этой библиотеки, потому копаю в других направлениях. Переменная message формируется и проверяется прямо в JS для каждой формы. Пытаюсь найти способ таким же образом в Send.php передавать пакет файлов.


Часовой пояс GMT +3, время: 14:40.