@kotletka2

Как отправить файлы на почту через контактную форму?

Всем привет! Ребята, может кто-нибудь сможет подсказать что-нибудь?
На сайте есть контактная форма с возможностью прикрепить файлы. Форма рабочая, но файл отправляется только на сервер, но не на почту. Я в PHP не понимаю ничего, но меня поставили перед фактом, что надо сделать. Ломала голову два дня, пробовала подключать разные плагины загрузчики файлов, но все упирается в незнание php(

Буду рада любой помощи и заранее всем спасибо!

Исходная ситуация такая:

html (тут только поле для выбора файла, чтобы не плодить много кода, тк вся остальная форма работает корректно):
<input type="file" id="upl_button" name="foxstdupload" multiple="multiple"/>
	<div id='loading'></div>
	<div id='upl_status'></div>


js
jQuery(function() {
var btnUpload=jQuery('#upl_button');
  var status=jQuery('#upl_status');

 new AjaxUpload(btnUpload, {
      action: 'uploader.php',
      name: 'upl_file',
      data: {sid : '<?=session_id()?>'},
      onSubmit: function(file, ext){
          status.html('');
          if (! (ext && /^(jpg|jpeg|png|bmp|gif|pdf|doc|docx|xls|rar|zip)$/.test(ext))){
              status.html('Допустимые форматы:'+"<br />"+'jpg, jpeg, png,  gif, bmp, pdf, doc, docx, xls, rar, zip');
              return false;
          }
        //  $('#file').fadeOut(0);
          jQuery('#loading').fadeIn(0);
      },
      onComplete: function(file, response){
          status.html('');
          jQuery('#file').html('');
          var arr_resp = response.split("#%#");
          
          if(arr_resp[0]==="true"){
            jQuery('#loading').fadeOut(0);
            //jQuery('span.file input').val(arr_resp[1]);
            status.html(arr_resp[1]+' загружен');
            //  $('#file').attr('src', 'files/' + arr_resp[1]).fadeIn(0);
          }else{

              jQuery('#loading').fadeOut(0);
              status.after(response);
              //status.html(response);
              //alert(response);

          }
     }
  });

  });


uploader.php
<?php
//session_start();
//if(session_id() != $_POST['sid']) die('Access_denied');
 
$ext = substr($_FILES['upl_file']['name'], 1 + strrpos($_FILES['upl_file']['name'], "."));
$ext = strtolower($ext);

$valid_ext = array('jpg', 'jpeg', 'png',  'gif', 'bmp', 'pdf', 'doc', 'docx', 'xls', 'rar', 'zip'); // допустимые расширения
if(in_array($ext, $valid_ext)){
    $filename = time().'.'.$ext; 
    $path_file = './uploads/'.$filename;
    if(($_FILES['upl_file']['size'] != 0 and $_FILES['upl_file']['size']<=200000))
    {
    if(!copy($_FILES['upl_file']['tmp_name'], $path_file)){
        echo 'Файл не загружен. Повторите попытку';
    }else{
        
        echo 'true#%#'.$filename; // Возврат статуса загрузки и имени файла
    }
    }else{
    echo 'Размер файла не должен превышать 200Кб.';
}
}else{
    echo 'Недопустимый формат файла.';
}
?>


Обработчик формы:
<?php

$date=date("d.m.y");
$time=date("H:i");

$adminemail=$_POST['admin-email'];
$title=$_POST['title'];

$name=$_POST['name'];
$phone=$_POST['phone'];
$email=$_POST['email'];
$usluga=$_POST['usluga'];
$message=$_POST['message'];
$file=$_POST['path'];

$msg="
Имя: $name
Телефон: $phone
email: $email
Услуга: $usluga
Комментарии: $message
Отправлено со страницы: $title
Файл: $file
";

$fam=$_POST['fam'];
$head=$_POST['head'];
$message_text=$_POST['message_text'];

if(  ($name != 'Имя:') && ($phone != 'Телефон:') && ($fam == 'Фамилия:') && ($head == 'Заголовок:') && ($message_text == '') ){
    mail("$adminemail",
        "form-raschet-stoimosti",
        "$msg",
        "Content-Type: text/plain; charset=utf-8\r\n"."From: SGM\r\n");     
}

?>
  • Вопрос задан
  • 2478 просмотров
Пригласить эксперта
Ответы на вопрос 2
NikitaRain
@NikitaRain
Full-Stack Developer.
Лучше использовать библиотеку PHPMailer -> https://packagist.org/packages/phpmailer/phpmailer
Ответ написан
Комментировать
@f0rest
PHPMailer действительно все существенно облегчает: https://medium.com/@shpaginkirill/вменяемая-инстру...

Как сохранять файлы на сервер Ajax-ом: https://wp-kama.ru/id_9026/jquery-ajax-zagruzka-fa...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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