@easy_steel_design

Почему не работает отправка формы?

Добрый день!

Я новичок в программировании, поэтому не судите строго.

Я попробовал использовать phpmailer на своем проекте, но не тут то было. Он совсем не работает.

PHP

<?php 
 
$name = $_POST['name'];
$phone = $_POST['phone'];
 
require_once('php/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = 'utf-8';
 
// $mail->SMTPDebug = 3;                               // Enable verbose debug output
 
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.yandex.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'ulquiora123@yandex.ru';                 // Наш логин
$mail->Password = '**************';                           // Наш пароль от ящика
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;                                    // TCP port to connect to
 
$mail->setFrom('ulquiora123@yandex.ru', 'Pulse');   // От кого письмо 
$mail->addAddress('easy-webdesign@yandex.ru');     // Add a recipient
//$mail->addAddress('ellen@example.com');               // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
//$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML
 
$mail->Subject = 'Данные';
$mail->Body    = '
        Пользователь оставил данные <br> 
    Имя: ' . $name . ' <br>
    Номер телефона: ' . $phone . '';
 
if(!$mail->send()) {
    return false;
} else {
    return true;
}
 
?>


JS
let popupThanks = document.querySelector('.popup__thanks'),
                popupError = document.querySelector('.popup__error'),
                popup = document.querySelector('.popup'),
                form = document.querySelector('#lead_form'),
                input = form.getElementsByTagName('input'),
                formPopUp = popup.querySelector('#lead_form__popup'),
                inputPop = formPopUp.getElementsByTagName('input');
 
            form.addEventListener('submit', function(event){
                event.preventDefault();
 
                let request = new XMLHttpRequest();
                request.open('POST', 'smart.php');
 
                request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                
                let formData = new FormData(form);
                request.send(formData);
 
            
            });

 
            formPopUp.addEventListener('submit', function(event){
                event.preventDefault();
 
                let request = new XMLHttpRequest();
                request.open('POST', 'smart.php');
 
                request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                
                let formDataPop = new FormData(formPopUp);
                request.send(formDataPop);
 
               
            });


Единственная форма php которая отправляла данные на почту

<?php
 /* Здесь проверяется существование переменных */
  if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
 if (isset($_POST['name'])) {$name = $_POST['name'];}
 
 
/* Сюда впишите свою эл. почту */
 $address = "easy-webdesign@yandex.ru";
 
/* А здесь прописывается текст сообщения, \n - перенос строки */
 $mes = "Тема: Заказ обратного звонка!\nТелефон: $phone\nИмя: $name\nE-mail: $email";
 
/* А эта функция как раз занимается отправкой письма на указанный вами email */
$sub='Заказ'; //сабж
$email='Заказ <vpluce.ru>'; // от кого
 $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");
 
ini_set('short_open_tag', 'On');
header('Refresh: 3; URL=index.html');
?>

Но проблема в том что на почту она приходит вот в таком виде

To: easy-webdesign@yandex.ru

Subject: Заказ

X-PHP-Originating-Script: 0:server.php

Content-type:text/plain; charset = utf-8

From:Заказ

Тема: Заказ обратного звонка!

Имя:

Телефон:

E-mail:


html код

<div class="popup popup__fadeIn">
        <div class="popup__window">
                <h2 class="forms__title title__c">Оставьте заявку и при заказе сайта <br>получите месяц рекламной кампании в ПОДАРОК</h2>
                <form class="lead_form" method="post" action="#" id="lead_form__popup">
                    <input required minlength="2" maxlength="15" type="text" name="name" placeholder="Ваше имя" class="input__form input__form__name">
                    <input required minlength="11" maxlength="17" type="tel" name="phone" placeholder="Ваш телефон" class="input__form input__form__phone">
                    <label class="lable"><input required type="checkbox" name="ez">
                        <span></span>
                        <p>Даю согласие на обработку моих персональных данных <br> в соответствии с <a href="politics.html" target="_blank">политикой конфиденциальности</a> </p>
                    </label>
                    <button class="btn m thanks">Получить</button>
                </form>
                <button class="close"></button>
                
        </div>


Что я не так делаю?
Помогите советом. Ни один другой php не работает точно так же как и phpmailer.
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 4
vitoser1979
@vitoser1979
Анализ анкеты ВКонтакте - https://watchprofile.ru/
Вставьте в код вверху

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);


тогда видно будет на какой строке ошибка!
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
не работает
Все работает, другое дело что вы допускаете ошибки, и код делает не то что вы ожидаете.

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

Что нужно сделать:
Во первых оформить вопрос чтобы его можно было прочесть и понять.
Во вторых привести ошибки: 1) из консоли браузера, если таковые есть, 2) из логов сервера, или как более логичный для разработчика вариант - включить вывод ошибок и посмотреть в чем проблема.
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
В 'smart.php' вставьте PHP-код:
ini_set('error_reporting', E_ALL);
$mail = new PHPMailer;
$mail->SMTPDebug = 2;

и после этого смотрите ошибки в errorlog файле.
Скорее всего там что-нибудь найдётся, раз письма не отправляются.
Ответ написан
Комментировать
Раскомментируйте $mail->SMTPDebug = 3 и посмотрите вывод

Вполне возможно, что вам поможет это
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы