@Danila232

Почему не отправляется форма через phpMailer?

*разобрался, не тратьте время

Использовал fetch-запрос + phpMailer. Сам запрос уходит хорошо, статус 200, приходит тоже на мою почту. Но почему то саму инфу с полей формы не присылает(48стр в js), только то, что я записал непосредственно через formData.set(). Знаю только JS, с PHP вообще не знаком. Мне кажется что-то поменять надо в php-файле, но я опять же, не могу знать что. Буду благодарен, если подскажете, в чём дело

65c487622c2bf642077154.jpeg

document.addEventListener('DOMContentLoaded', function () {

    function validation() {}// возвращает true/false, делает валидацию полей
       
    async function postSend(e) {

        e.preventDefault()

        let formData = new FormData(this)
        formData.set('Имя разработчика:', 'Данила')

        if (validation()) {

            let response = await fetch('mailer.php', {
                method: 'POST',
                body: formData
            })

            if (response.ok) {
                formOverlay.classList.add('active-form')
                return await response.json()
            } else {
                alert('Ошибка на сервере!')
                this.reset()
            }

        }

    }

    let formOverlay = document.querySelector('.form-done')
    let allForms = document.querySelectorAll('form')
    allForms.forEach((form) => {
        form.addEventListener('submit', postSend)
    })

})


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

$title = "Тема письма";
$file = $_FILES['file'];

$c = true;
// Формирование самого письма
$title = "Заголовок письма";
foreach ( $_POST as $key => $value ) {
  if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
    $body .= "
    " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
      <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
      <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
    </tr>
    ";
  }
}

$body = "<table style='width: 100%;'>$body</table>";

// Настройки PHPMailer
$mail = new PHPMailer\PHPMailer\PHPMailer();

try {
  $mail->isSMTP();
  $mail->CharSet = "UTF-8";
  $mail->SMTPAuth   = true;

  // Настройки вашей почты
  $mail->Host       = 'smtp.gmail.com'; // SMTP сервера вашей почты
  $mail->Username   = 'idemvpered76@gmail.com'; // Логин на почте
  $mail->Password   = 'работающийпароль(скрыл)'; // Пароль на почте
  $mail->SMTPSecure = 'ssl';
  $mail->Port       = 465;

  $mail->setFrom('Заявка с вашего сайта'); // Адрес самой почты и имя отправителя

  // Получатель письма
  $mail->addAddress('idemvpered76@gmail.com');

  // Отправка сообщения
  $mail->isHTML(true);
  $mail->Subject = $title;
  $mail->Body = $body;

  $mail->send();

} catch (Exception $e) {
  $status = "Сообщение не было отправлено. Причина ошибки: {$mail->ErrorInfo}";
}


65c486de5fa74729174030.jpeg
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вы уверены, что в let formData = new FormData(this) this указывает именно на форму? Я бы заменил на e.target.
Ответ написан
Ваш ответ на вопрос

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

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