Что означает ошибка при отправке почты и как ее исправить?

В первые сталкиваюсь с php и не понимаю что означает данная ошибка.

html

<form class="form" method="POST" action="mail.php">
                    <ul class="form__list">
                      <li class="form__item">
                        <label class="form__label" for="name">Имя</label>
                        <input class="form__field" type="text" name="name" id="name" placeholder="Введите имя" required>
                      </li>
                      <li class="form__item">
                        <label class="form__label" for="tel">Номер телефона</label>
                        <input class="form__field" type="tel" name="tel" id="tel" placeholder="+7 (___) ___-__-__" required>
                      </li>
                    </ul>
                    <button class="form__btn btn" type="submit" name="form-submit">Отправить</button>
                  </form>



js отправки (события из библиотеки bouncer)

form.addEventListener('bouncerFormValid', formSend);

  async function formSend(e) {
    let formData = new FormData(form);

    let response = await fetch('mail.php', {
      method: ('POST'),
      body: FormData,
    });

    if (response.ok) {
      let result = await response.json();
      alert(result.message);
      form.reset();
    } else {
      alert('Упс, что-то пошло не так');
    }

  };



php

<?php
  use PHPMailer\PHPMailer\PHPMailer;
  use PHPMailer\PHPMailer\Exception;

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

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

  $mail->setFrom('info@chipdip33.ru', 'Чип и Дип');
  $mail->addAddress('milan7457@yandex.ru');
  $mail->Subject = 'Привет';

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

  if(trim(!empty($_POST['name']))){
    $body.='<p><strong>Имя</strong> '.$_POST['name'].'</p>';
  }
  if(trim(!empty($_POST['tel']))){
    $body.='<p><strong>Имя</strong> '.$_POST['tel'].'</p>';
  }

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

  $response = ['message' => $message];
  header('Content-type: application.json');
  echo json_encode($response);

  ?>



При сабмите вылезает ошибка 500, логи сервера:
chipdip33.ru [Mon Dec 28 23:07:21 2020] [php7:error] [pid 168688] [client 95.106.199.138:0] PHP Fatal error: Uncaught PHPMailer\\PHPMailer\\Exception: \xd0\x9f\xd1\x83\xd1\x81\xd1\x82\xd0\xbe\xd0\xb5 \xd1\x81\xd0\xbe\xd0\xbe\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 in /home/m/milan7457y/public_html/resources/phpmailer/src/PHPMailer.php:1535\nStack trace:\n#0 /home/m/milan7457y/public_html/resources/phpmailer/src/PHPMailer.php(1438): PHPMailer\\PHPMailer\\PHPMailer->preSend()\n#1 /home/m/milan7457y/public_html/mail.php(26): PHPMailer\\PHPMailer\\PHPMailer->send()\n#2 {main}\n thrown in /home/m/milan7457y/public_html/resources/phpmailer/src/PHPMailer.php on line 1535, referer: https://chipdip33.ru/
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
ddecode.com/hexdecoder/?results=2f4f0179471d76df04... - вот сюда загоняете
\xd0\x9f\xd1\x83\xd1\x81\xd1\x82\xd0\xbe\xd0\xb5 \xd1\x81\xd0\xbe\xd0\xbe\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5
и узнаёте, что у вас пустое сообщение (видимо установка языка еще и ошибки phpMailer'а переводит).
Судя по коду, тело сообщения вы сформировали в $body, но надо ещё это тело передать в $mail. Наверно там есть какой-нибудь метод типа $mail->setBody($body);
Ну и до кучи можно в try-catch отправку обернуть, чтобы исключения перехватывать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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