Подскажите пожалуйста. На сайте работала форма обратной связи, все было нормально. Письма отправлялись.
Вдруг перестала работать. То есть в итоге письма приходит через несколько часов, но перестало всплывать сообщение, что сообщение отправлено и в консоли ошибка
VM9557:1 Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse ()
at XMLHttpRequest.req.onload (script.js:140)
это форма
<form method="POST" class="feedback" enctype="multipart/form-data" onsubmit="send(event, 'send.php')">
<input required type="text" name="email-phone" class="email-phone" placeholder="Введите ваш телефон или email">
<textarea required name="message" rows="10" cols="45" class="message-text" placeholder="Введите ваше сообщение"></textarea>
<div class="example-2">
<div class="form-group">
<input type="file" name="file" id="file" class="input-file">
<label for="file" class="btn btn-tertiary js-labelFile">
<i class="icon fa fa-check"></i>
<span class="js-fileName">Загрузить файл</span>
</label>
</div>
</div>
<!-- <input type="file" name="myfile[]" multiple id="myfile"> -->
<input type="submit" class="submit">
</form>
вот script js
function send(event, php){
console.log("Отправка запроса");
event.preventDefault ? event.preventDefault() : event.returnValue = false;
var req = new XMLHttpRequest();
req.open('POST', php, true);
req.onload = function() {
if (req.status >= 200 && req.status < 400) {
json = JSON.parse(this.response);
console.log(json);
if (json.result == "success") {
document.querySelector('.form-feedback').style.display = 'none';
item1.style.opacity = 1;
let out = document.querySelectorAll('.inner-form');
out[0].value = '';
out[1].value = '';
/* Если сообщение отправлено */
alert("Сообщение отправлено");
} else {
alert("Ошибка. Сообщение не отправлено");
}
} else {
alert("Ошибка на сервере. Сообщение не отправлено");
}
};
/* Если не удалось отправить запрос. Стоит блок на хостинге */
req.onerror = function() {alert("Ошибка отправки запроса");};
req.send(new FormData(event.target));
}
это php файл
<?php
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';
require 'PHPMailer/Exception.php';
/* Переменные, которые отправляет пользователь */
$emailPhone = $_POST['email-phone'];
$message = $_POST['message'];
$file = $_FILES['myfile'];
/* Формирование самого письма */
$title = "Письмо с сайта";
$body = "
<h2>Новое письмо</h2>
<b>Контактные данные:</b> $emailPhone<br>
<b>Сообщение:</b><br>$message
";
/* Настройки PHPMailer */
$mail = new PHPMailer\PHPMailer\PHPMailer();
try {
$mail->isSMTP();
$mail->CharSet = "UTF-8";
$mail->SMTPAuth = true;
$mail->SMTPDebug = 2;
$mail->Debugoutput = function($str, $level) {$GLOBALS['status'][] = $str;};
/* Настройки почты */
$mail->Host = 'ssl://smtp.mail.ru'; /* SMTP сервер почты */
$mail->Username = '*********'; /* Логин на почте */
$mail->Password = '*******'; /* Пароль на почте */
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('******', '*******'); /* Адрес самой почты и имя отправителя */
/* настройки яндекса
$mail->Host = 'smtp.yandex.ru';
$mail->Password = '******';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('******', '*******');
*/
/* Получатель письма */
$mail->addAddress('*******');
/* $mail->addAddress('youremail@gmail.com');
/* Прикрипление файлов к письму */
if (!empty($file['name'][0])) {
for ($ct = 0; $ct < count($file['tmp_name']); $ct++) {
$uploadfile = tempnam(sys_get_temp_dir(), sha1($file['name'][$ct]));
$filename = $file['name'][$ct];
if (move_uploaded_file($file['tmp_name'][$ct], $uploadfile)) {
$mail->addAttachment($uploadfile, $filename);
$rfile[] = "Файл $filename прикреплён";
} else {
$rfile[] = "Не удалось прикрепить файл $filename";
}
}
}
/* Отправка сообщения */
$mail->isHTML(true);
$mail->Subject = $title;
$mail->Body = $body;
/* Проверяем отравленность сообщения */
if ($mail->send()) {$result = "success";}
else {$result = "error";}
} catch (Exception $e) {
$result = "error";
$status = "Сообщение не было отправлено. Причина ошибки: {$mail->ErrorInfo}";
}
/* Отображение результата */
echo json_encode(["result" => $result, "resultfile" => $rfile, "status" => $status]);