@Evskaya

Ошибка 404 при настройке phpmailer?

При настройке phpmailer в результате получаю ошибку 404. Файл send.php находится в папке библиотеки phpmailer. Подскажите, пожалуйста, где может быть ошибка? код html и php прикладываю

<!doctype html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Демо Bootstrap</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
  <link rel="stylesheet" href="css/style.css">
</head>
<body>


 <form enctype="multipart/form-data" method="post" id="form" onsubmit="submitForm(event)" action="send.php">
  <p>Имя</p>
  <input placeholder="Представьтесь" name="name" type="text" >
  <p>Email</p>
  <input placeholder="Укажите почту" name="email" type="text" >
  <p>Сообщение</p>
  <textarea name="text"></textarea>
  <p>Прикрепить файлы</p>
  <input type="file" name="myfile[]" multiple id="myfile">
  <p><input value="Отправить" type="submit"></p>
</form>



<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script>
<script>
async function submitForm(event) {
  event.preventDefault(); // отключаем перезагрузку/перенаправление страницы
  try {
    // Формируем запрос
    const response = await fetch(event.target.action, {
      method: 'POST',
      body: new FormData(event.target)
    });
    // проверяем, что ответ есть
    if (!response.ok) throw (`Ошибка при обращении к серверу: ${response.status}`);
    // проверяем, что ответ действительно JSON
    const contentType = response.headers.get('content-type');
    if (!contentType || !contentType.includes('application/json')) {
      throw ('Ошибка обработки. Ответ не JSON');
    }
    // обрабатываем запрос
    const json = await response.json();
    if (json.result === "success") {
      // в случае успеха
      alert(json.info);
    } else { 
      // в случае ошибки
      console.log(json);
      throw (json.info);
    }
  } catch (error) { // обработка ошибки
    alert(error);
  }
}
</script>
</body>
</html>


<?php
// Файлы phpmailer
require 'phpmailer/PHPMailer.php';
require 'phpmailer/SMTP.php';
require 'phpmailer/Exception.php';

# проверка, что ошибки нет
if (!error_get_last()) {

    // Переменные, которые отправляет пользователь
    $name = $_POST['name'] ;
    $email = $_POST['email'];
    $text = $_POST['text'];
    $file = $_FILES['myfile'];
    
    
    // Формирование самого письма
    $title = "Заголовок письма";
    $body = "
    <h2>Новое письмо</h2>
    <b>Имя:</b> $name<br>
    <b>Почта:</b> $email<br><br>
    <b>Сообщение:</b><br>$text
    ";
    
    // Настройки PHPMailer
    $mail = new PHPMailer\PHPMailer\PHPMailer();
    
    $mail->isSMTP();   
    $mail->CharSet = "UTF-8";
    $mail->SMTPAuth   = true;
    //$mail->SMTPDebug = 2;
    $mail->Debugoutput = function($str, $level) {$GLOBALS['data']['debug'][] = $str;};
    
    // Настройки вашей почты
    $mail->Host       = 'smtp.gmail.ru'; // SMTP сервера вашей почты
    $mail->Username   = 'epetrovskaya11@gmail.com'; // Логин на почте
    $mail->Password   = 'bmsojhjxqhjtiwhh'; // Пароль на почте
    $mail->SMTPSecure = 'ssl';
    $mail->Port       = 465;
    $mail->setFrom('epetrovskaya11@gmail.com', 'Name'); // Адрес самой почты и имя отправителя
    
    // Получатель письма
    $mail->addAddress('evskaya11@bk.ru');  
    // $mail->addAddress('poluchatel2@gmail.com'); // Ещё один, если нужен
    
    // Прикрипление файлов к письму
    if (!empty($file['name'][0])) {
        for ($i = 0; $i < count($file['tmp_name']); $i++) {
            if ($file['error'][$i] === 0) 
                $mail->addAttachment($file['tmp_name'][$i], $file['name'][$i]);
        }
    }
    // Отправка сообщения
    $mail->isHTML(true);
    $mail->Subject = Это тема письма;
    $mail->Body = Это тело письма;    
    
    // Проверяем отправленность сообщения
    if (!$mail->send()) {
        $data['result'] = 'success';
        $data['info'] = 'Сообщение успешно отправлено!';
    } else {
        $data['result'] = 'error';
        $data['info'] = 'Сообщение не было отправлено. Ошибка при отправке письма';
        $data['desc'] = 'Причина ошибки: {$mail->ErrorInfo}';
    }
    
} else {
    $data['result'] = "error";
    $data['info'] = "В коде присутствует ошибка";
    $data['desc'] = error_get_last();
}

// Отправка результата
header('Content-Type: application/json');
echo json_encode($data);

?>
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Ошибка видимо в голове, которая не понимает смысла ошибки HTTP 404 "File not found", при обращении к не понятно какому именно файлу, в описании вопроса про это вообще ничего не сказано.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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