В чем ошибка при работе PHPMailer на хостинге?

Загрузил сайт на пробный хостинг.
При отправке формы в консоли выдает ошибку:

Uncaught (in promise) 
SyntaxError: Unexpected token '<', "<br /><b>"... is not valid JSON


Вот следующий код...
document.addEventListener('DOMContentLoaded', function () {
  const form = document.getElementById('form');
  form.addEventListener('submit', formSend);

  async function formSend (e) {
    
    e.preventDefault();

    let error = formValidate(form);

    let formData = new FormData(form);
    

    if(error === 0) {
      form.classList.add('_sending');

      let response = await fetch('sendmail.php', {
        method: 'POST',
        body: formData
      });
      if(response.ok) {
        let result = await response.json();
        alert(result.message);
        form.reset();
        form.classList.remove('_sending');

      } else {
        alert("Ошибка");
        form.classList.remove('_sending');
      }

    } else {
      alert('заполните обязательные поля');
    }
  }


  function formValidate(form) {
    let error = 0;
    let formReq = document.querySelectorAll('._req');

    for (let index = 0; index < formReq.length; index++) {
      const input = formReq[index];
      formRemoveError(input);

      if(input.classList.contains('_email')) {
          if(emailTest(input)) {
            formAddError(input);
            error++;
          } 
        } else {
          if(input.value === "") {
            formAddError(input);
            error++;
          }
      }

      if(input.classList.contains('_phone')) {
        if(isPhoneValid(input)) {
          formAddError(input);
          error++;
        }
      }
    }
    return error;
  }

  function formAddError(input) {
    input.parentElement.classList.add("_error");
    input.classList.add("_error");
  }

  function formRemoveError(input) {
    input.parentElement.classList.remove("_error");
    input.classList.remove("_error");
  }

  // Функция теста Email
  function emailTest(input) {
    return !/^\w+([\.-]?\w+)*@\w+([\.-]?w+)*(\.\w{2,8})+$/.test(input.value);
  }

  // Функция теста телефона
  function isPhoneValid (input) {
    return !/^\8\d{3}\d{3}\d{2}\d{2}$/g.test(input.value);
  }
})


код из sendmail.php
<?php
  use PHPMailer\PHPMailer\PHPMailer;
  use PHPMailer\PHPMailer\Exception;

  require 'phpmailer/src/Exception.php';
  require 'phpmailer/src/PHPMailer.php'; 

  $mail = new PHPMailer(true);
  
  $mail->CharSet = 'UTF-8';
  $mail->setLanguage('ru', 'phpmailer/language/');
  $mail->IsHTML(true);

  //От кого письмо
  $mail->setFrom('v-yachts@yandex.com', 'Заявка на заказ');
  //Кому отправить
  $mail->addAddress('dominorog323@gmail.com'); //shubin.yuri@gmail.com
  $mail->Subject = 'Новая заявка';

  //Тело письма
  $body = '<h1>Новое письмо!</h1>';

  if(trim(!empty($_POST['name']))) {
    $body.='<p><strong>Имя:</strong> '.$_POST['name'].'</p>';
  }
  if(trim(!empty($_POST['phone']))) {
    $body.='<p><strong>Телефон:</strong> '.$_POST['phone'].'</p>';
  }
  if(trim(!empty($_POST['email']))) {
    $body.='<p><strong>E-mail:</strong> '.$_POST['email'].'</p>';
  }

  $mail->Body = $body;

  //Отправляем
  if(!mail->send()) {
    $message = 'Ошибка';
  } else {
    $message = 'Данные отправлены';
  }

  $response = ['message' => $message];

  header('Content-type: application.json');
  echo json_encode($response);
?>
  • Вопрос задан
  • 633 просмотра
Решения вопроса 1
@risejs
На бесплатном хостинге могут быть установлены ограничения на работу скриптов пользователя, например, запрещено использование функции mail php или отправка писем любым другим образом. Читайте внимательно условия использования хостинга.

Полный текст ошибки ответа сервера вы можете посмотреть в DevTools во вкладке Network.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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