0
0

Добрый день. 

JS:

let message = {
    loading: 'Загрузка...',
    success: 'Спасибо! Скоро я с Вами свяжусь!',
    failure: 'Что-то пошло не так...'
};

let form = document.querySelector('.contacts__form'),
    input = form.getElementsByTagName('input'),
    statusMessage = document.createElement('div');

    statusMessage.classList.add('status');


    form.addEventListener('submit', function(event) {
        event.preventDefault();
        form.appendChild(statusMessage);

    let request = new XMLHttpRequest();
    request.open('POST', 'mailer/smart.php');
    request.setRequestHeader('Content-type', 'application/json; charset=utf-8');

    let formData = new FormData(form);

    let obj = {};
    formData.forEach(function(value, key) {
        obj[key] = value;
    });
    let json = JSON.stringify(obj);

    request.send(json);

    console.log(obj);

    request.addEventListener('readystatechange', function() {
        if (request.readyState < 4) {
            statusMessage.innerHTML = message.loading;
        } else if(request.readyState === 4 && request.status == 200) {
            statusMessage.innerHTML = message.success;
        } else {
            statusMessage.innerHTML = message.failure;
        }
    });

    
    for (let i = 0; i < input.length; i++) {
        input[i].value = '';
    }
});

php:

<?php 

$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$text = $_POST['text'];

require_once('phpmailer/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.mail.ru';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = '---@mail.ru';                 // Наш логин
$mail->Password = '---';                           // Наш пароль от ящика
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;                                    // TCP port to connect to
 
$mail->setFrom('---@mail.ru', 'Работодатель с сайта');   // От кого письмо 
$mail->addAddress('---@mail.ru');     // Add a recipient

$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Данные';
$mail->Body    = '
        Тебя приглашает на работу с огррромной зарплатой, интересным проектом и классной командой <br> 
    Имя: ' . $name . ' <br>
    Текст: ' . $text . ' <br>
    Номер телефона: ' . $phone . '<br>
    E-mail: ' . $email . '';

if(!$mail->send()) {
    return false;
} else {
    return true;
}

?>

ошибок в консоли нет, выводит объект с введенными данными, 

{name: "7i67i", email: "yj@yjtk", text: "ukyuk"}
email: "yj@yjtk"
name: "7i67i"
text: "ukyuk"

запрос отправляется

Request URL:
http://www.---.ru/mailer/smart.php
Request Method:
POST
Status Code:
200 OK
Remote Address:
94.130.167.163:80
Referrer Policy:
strict-origin-when-cross-origin
Response HeadersView source
Connection:
keep-alive
Content-Encoding:
gzip
Content-Type:
text/html; charset=UTF-8
Date:
Wed, 14 Jul 2021 09:44:24 GMT
Server:
nginx/1.20.1
Transfer-Encoding:
chunked
X-Powered-By:
PHP/7.4.19
Request HeadersView source
Accept:
*/*
Accept-Encoding:
gzip, deflate
Accept-Language:
ru,en-US;q=0.9,en;q=0.8,tr;q=0.7
Connection:
keep-alive
Content-Length:
49
Content-type:
application/json; charset=UTF-8
Host:
www.---.ru
Origin:
http://www.---.ru
Referer:
http://www.---.ru/
User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Request Payloadview source
{name: "7i67i", email: "yj@yjtk", text: "ukyuk"}
email: "yj@yjtk"
name: "7i67i"
 
text: "ukyuk"

на почту приходят не заполненные данные 

Тебя приглашает на работу с огррромной зарплатой, интересным проектом и классной командой
Имя:
Текст:
Номер телефона:
E-mail:

в чем может быть ошибка?

Спасибо


Ирена Чистякова
3 years ago






Добрый день. Это довольно странно, так ак судя по логам и от фронта данные приходят и само письмо на почту уходит. Попробуйте раскомментировать строку $mail->SMTPDebug = 3;  и посмотреть после отправки запроса вкладку Network. Там в самом запросе появятся дополнительные данные о нем, может там какая-либо полезная информация будет.

Иван Петриченко
3 years ago

Здравствуйте, Иван. Спасибо большое за ответ. И спасибо за отличные уроки)

Строку раскомментировала.

Request URL:
http://localhost:8888/mailer/smart.php
Request Method:
POST
Status Code:
200 OK
Remote Address:
127.0.0.1:8888
Referrer Policy:
strict-origin-when-cross-origin
Response HeadersView source
Connection:
Keep-Alive
Content-Encoding:
gzip
Content-Length:
988
Content-Type:
text/html; charset=UTF-8
Date:
Mon, 19 Jul 2021 09:36:06 GMT
Keep-Alive:
timeout=5, max=100
Server:
Apache/2.2.31 (Win32) DAV/2 mod_ssl/2.2.31 OpenSSL/1.0.2h mod_fcgid/2.3.9 mod_wsgi/3.4 Python/2.7.6 PHP/7.4.1 mod_perl/2.0.8 Perl/v5.16.3
Vary:
Accept-Encoding
X-Powered-By:
PHP/7.4.1
Request HeadersView source
Accept:
*/*
Accept-Encoding:
gzip, deflate, br
Accept-Language:
ru,en-US;q=0.9,en;q=0.8,tr;q=0.7
Connection:
keep-alive
Content-Length:
50
Content-type:
application/json; charset=UTF-8
Cookie:
SQLiteManager_currentLangue=2
Host:
localhost:8888
Origin:
http://localhost:8888
Referer:
http://localhost:8888/
sec-ch-ua:
" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
sec-ch-ua-mobile:
?0
Sec-Fetch-Dest:
empty
Sec-Fetch-Mode:
cors
Sec-Fetch-Site:
same-origin
User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Request Payloadview source
{name: "tjtyj", email: "ytj@kyuk", text: "yliul"}
email: "ytj@kyuk"
name: "tjtyj"
text: "yliul"

Ирена Чистякова
3 years ago

2 ответов