@sagaton

Как передать файл с формы через ajax, на почту php mail?

Столкнулся с проблемой, что никак не хочет приходить письмо с формы с файлом.
Приходит без файла.

вот сама форма
<form action="#" class="ordinary_form1" enctype="multipart/form-data">
            <div class="nameContainer">
                <input  type="hidden" name="whatisit" value="Расчет стоимость повреждения">
                <input id="i1" type="text" placeholder="Ваше имя" name="name">
                <input id="i2" type="tel" placeholder="Телефон" name="phone">
            </div>
            <div class="problemContainer">
                <textarea id="elm1" placeholder="Пожалуйста, опишите Вашу проблему. Чем детальнее описание, тем точне предварительная цена"></textarea>
                <div class="sendContainer">
                    <div >

                        <input type="file" accept=".png, .jpg, .gif" name="file" id="file" class="input-file" >
                        <label for="file" class="btn btn-tertiary js-labelFile">
                            <div class="transformInput">
                                <span class="js-fileName">Прикрепить фото</span>
                                <img src="./img/priceOnline/screpca.svg" alt="#">
                            </div>
                        </label>
                    </div>
                    <div class="fileChange">
                        <div class="fileFalse">
                            Файл не выбран...
                        </div>
                        <div class="fileTrue">
                            Вы выбрали файл
                        </div>
                    </div>
                </div>

            </div>
            <p>Нажимая кнопку «Отправить»,
                Вы соглашаетесь c условиями
                <a href="#disclaimer">Политики конфиденциальности</a>
            </p>

            <button class="sendBtn" type="submit"> Отправить<div class="arrow">
                    <img src="./img/slider/arrowNext.svg" alt="#">
                </div>
            </button>

        </form>


вот скрипт отправки на обработчик
$("body").on("submit", ".ordinary_form1", function (e) {

        e.preventDefault();

        var checkphone = pleaseCheckPhone(this, 'input[name="phone"]');
        if (checkphone === false)
            return false;

        var name = $(this).find('input[name="name"]').val();
        var phone = $(this).find('input[name="phone"]').val();
        var area = $("#elm1").val();
        var file =$('#file').val();

        $.ajax({
            type: "POST",
            url: "/script.php",
            data: {
                i2: phone,
                i1: name,
                i3: area,
                i5: file,
                whatisit: $(this).find('input[name="whatisit"]').val(),

            },


            success: function (msg) {
                console.log("OK");
            },
            error: function (msg2) {
                console.log(msg2);
            },
            timeout: 10000
        });
        $('.priceOnline').html('      <div class="btnContainer" >       <img data-bs-dismiss="modal" src="./img/modal/cross.svg" alt="#">   </div>          <p class="thank-you" style="color: aliceblue"><strong>Спасибо!</strong><br><br>Ваша заявка получена и мы свяжемся с Вами в ближайшее время!</p>');
    });

и обработчик
<?php



$HTTP_HOST = $_SERVER["HTTP_HOST"];
//$name = filter_input(INPUT_POST, 'i2', FILTER_SANITIZE_STRING);
//$tel = filter_input(INPUT_POST, 'i1', FILTER_SANITIZE_NUMBER_FLOAT);
$name=$_POST["i1"];
$tel =$_POST["i2"];
$as=$_POST["i3"];
$qwe=$_FILES["i5"];
$messag = "Письмо об обратном звонке с сайта " . $HTTP_HOST . "\n";
$messag = $messag . "-------------------------------------- \n\n";
$messag = $messag . "Форма: " . substr(htmlspecialchars($_POST["whatisit"]), 0, 62) . "\n";
$messag = $messag . "Имя: " . substr(htmlspecialchars($_POST["i1"]), 0, 62) . "\n";
$messag = $messag . "Телефон: " . substr(htmlspecialchars($_POST["i2"]), 0, 62) . "\n";
$messag = $messag . "Проблема: " . substr(htmlspecialchars($_POST["i3"]), 0, 62) . "\n";
$messag = $messag . "Файл: " . substr(htmlspecialchars($_FILES["i5"]['tmp_name'], $_FILES['i5']['name']), 0, 62) . "\n";

$messag = $messag . "-------------------------------------- \n\n";
$messag = $messag . "Дата: " . date("d.m.Y h:i") . "\n";
$messag = $messag . "IP: " . htmlspecialchars($_SERVER['REMOTE_ADDR']);
$body = $messag;




    if (mail("seregadixi@mail.ru", "Письмо об обратном звонке с сайта " . $HTTP_HOST , $body, "From: i@webriz.ru\r\n"))

    {
    echo "Спасибо. Ваша заявка отправлена.  В ближайшее время с вами свяжется наш менеджер";
} else {
    echo "при отправке сообщения возникли ошибки";
}


Нормального примера как реализовать отправку через mail не нашел и потому сам понимаю что мой вариан кривой а вот как правильно его сделать никак не могу.
Может кто знает как это сделать?
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Вы бы хоть потрудились изучить мануалы в сети:
https://snipp.ru/jquery/uploads-files-ajax-jquery

Ну почему вы не гуглите свой же вопрос перед тем, как спрашивать здесь?! Надеетесь получить готовое решение именно под вашу ситуацию? Ну так тогда это уже не вопрос, а задание! А с заданиями нужно обращаться на фрилансим.

https://freelance.habr.com
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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