Не могу найти ошибку почему не приходят письма?
Вот форма
<section class="screen-2"> <div class="container"> <div class="screen-2__row"> <div class="screen-2__form form" style="display:flex;"> <span class="screen-2__title"> Заказать консультацию </span> <form class="form__top" action="" id="form__top"> <div class="form__top"> <div class="form__input"> <div class="form__input__box"> <input type="text" name="name" placeholder="Ваше имя*" id="feedback_form_name3"> <input type="text" name="phone" placeholder="Телефон*" id="feedback_form_phone3"> <input type="hidden" id="feedback_form_url3" value="https://<?= $_SERVER['SERVER_NAME'] ?><?= $APPLICATION->GetCurDir() ?>"> </div> <div class="form__check"> <input id="checkboxAgree" type="checkbox" name="personal" checked> <label class="form-check__label" id="" for="checkboxAgree"> Нажимая кнопку «Отправить», вы принимаете политику конфиденциальности компании и даете согласие на обработку персональных данных </label> </div> </div> </div> <div class=""> <div class=""> <div class=""> <div class="alert alert-success text-center" role="alert" id="feedback_form_success3" style="display:none;font-size:13px"> Отлично! Ваша заявка успешно отправлена. </div> <div class="alert alert-danger text-center" role="alert" id="feedback_form_danger3" style="display:none;font-size:13px"> Пожалуйста, заполните обязательные поля формы Имя и Телефон </div> </div> <div class="" style="text-align:center;"> <!-- <button type="button" class="form_submit btn-statics" data-id="3" >Отправить</button> --> <button type="button" id="submitButton" class="submitButton form__btn btn-red__form__btn" data-id="3">ОТПРАВИТЬ</button> </div> </div> </div> </form> </div> </div> </div> </section> вот скрипт что проверяет на валидацию и ajax <code lang="javascript"> $(document).ready(function () { console.log('Партнеры top') const namet = document.getElementById('feedback_form_name3'); const phonet = document.getElementById('feedback_form_phone3'); const feedbackformurl3 = document.getElementById('feedback_form_url3'); $(".submitButton").click(function () { const nameValuet = namet.value; const phoneValuet = phonet.value; const feedbackformurl5Value = feedbackformurl3.value; // Получение значения checkbox var isChecked = $("#checkboxAgree").is(":checked"); // Проверка значения checkbox if (!isChecked) { // Вывод сообщения об ошибке alert("Пожалуйста, примите политику конфиденциальности."); return; // Прерываем выполнение функции } if (nameValuet == "" || phoneValuet == "") { $("#feedback_form_danger3").css("display", ""); } else { $("#feedback_form_danger3").css("display", "none"); $("#feedback_form_success3").css("display", ""); $.ajax({ type: "POST", url: "/local/components/main/send.form/templates/send.form-newdesignPartners/ajax.php", caches: false, data: { NAME: nameValuet, PHONE: phoneValuet,}, dataType: "html", beforeSend: function(){ $(".submitButton").prop("disabled", true); }, success: function(data){ if(!data) alert("Были ошибки, письмо не отправленно!"); else $("#form__top").trigger("reset"); $(".submitButton").prop("disabled", false); }, }); } }); }); </code> |
<section class="screen-2"> <div class="container"> <div class="screen-2__row"> <div class="screen-2__form form" style="display:flex;"> <span class="screen-2__title"> Заказать консультацию </span> <form class="form__top" action="" id="form__top"> <div class="form__top"> <div class="form__input"> <div class="form__input__box"> <input type="text" name="name" placeholder="Ваше имя*" id="feedback_form_name3"> <input type="text" name="phone" placeholder="Телефон*" id="feedback_form_phone3"> <input type="hidden" id="feedback_form_url3" value="https://<?= $_SERVER['SERVER_NAME'] ?><?= $APPLICATION->GetCurDir() ?>"> </div> <div class="form__check"> <input id="checkboxAgree" type="checkbox" name="personal" checked> <label class="form-check__label" id="" for="checkboxAgree"> Нажимая кнопку «Отправить», вы принимаете политику конфиденциальности компании и даете согласие на обработку персональных данных </label> </div> </div> </div> <div class=""> <div class=""> <div class=""> <div class="alert alert-success text-center" role="alert" id="feedback_form_success3" style="display:none;font-size:13px"> Отлично! Ваша заявка успешно отправлена. </div> <div class="alert alert-danger text-center" role="alert" id="feedback_form_danger3" style="display:none;font-size:13px"> Пожалуйста, заполните обязательные поля формы Имя и Телефон </div> </div> <div class="" style="text-align:center;"> <!-- <button type="button" class="form_submit btn-statics" data-id="3" >Отправить</button> --> <button type="button" id="submitButton" class="submitButton form__btn btn-red__form__btn" data-id="3">ОТПРАВИТЬ</button> </div> </div> </div> </form> </div> </div> </div> </section> вот скрипт что проверяет на валидацию и ajax <code lang="javascript"> $(document).ready(function () { console.log('Партнеры top') const namet = document.getElementById('feedback_form_name3'); const phonet = document.getElementById('feedback_form_phone3'); const feedbackformurl3 = document.getElementById('feedback_form_url3'); $(".submitButton").click(function () { const nameValuet = namet.value; const phoneValuet = phonet.value; const feedbackformurl5Value = feedbackformurl3.value; // Получение значения checkbox var isChecked = $("#checkboxAgree").is(":checked"); // Проверка значения checkbox if (!isChecked) { // Вывод сообщения об ошибке alert("Пожалуйста, примите политику конфиденциальности."); return; // Прерываем выполнение функции } if (nameValuet == "" || phoneValuet == "") { $("#feedback_form_danger3").css("display", ""); } else { $("#feedback_form_danger3").css("display", "none"); $("#feedback_form_success3").css("display", ""); $.ajax({ type: "POST", url: "/local/components/main/send.form/templates/send.form-newdesignPartners/ajax.php", caches: false, data: { NAME: nameValuet, PHONE: phoneValuet,}, dataType: "html", beforeSend: function(){ $(".submitButton").prop("disabled", true); }, success: function(data){ if(!data) alert("Были ошибки, письмо не отправленно!"); else $("#form__top").trigger("reset"); $(".submitButton").prop("disabled", false); }, }); } }); }); </code>
вот скрипт для отправки письма
$name = $_POST['name']; $phone = $_POST['phone']; $email = "отправитель@example.com"; $subject = "=?utf-8?B?".base64_encode("Сообщение с сайта")."?="; $message = "Имя: $name<br>Телефон: $phone"; $headers = "From: $emailrnReply-To: $emailrnContent-Type: text/html; charset=utf-8rn"; $succes = mail("vitamin-971@yandex.ru", $subject, $message, $headers); echo $succes; |
$name = $_POST['name']; $phone = $_POST['phone']; $email = "отправитель@example.com"; $subject = "=?utf-8?B?".base64_encode("Сообщение с сайта")."?="; $message = "Имя: $name<br>Телефон: $phone"; $headers = "From: $emailrnReply-To: $emailrnContent-Type: text/html; charset=utf-8rn"; $succes = mail("vitamin-971@yandex.ru", $subject, $message, $headers); echo $succes;
Дополнительно:
Не приходят, потому что не отправляются.
Проверьте как mail настроен. php.ini [mail function]
Ответы:
Проверьте свои письма здесь: https://www.mail-tester.com/
Скорее всего, получите 1/10
А дальше исправляйте каждый пункт. Начать, скорее всего, придётся с отказа от штатного mail и перехода на PHPMailer с отправкой через SMTP-сервер яндекса.
что может быть не так
$(document).ready(function () { const namet = document.getElementById('feedback_form_name3'); const phonet = document.getElementById('feedback_form_phone3'); const feedbackformurl3 = document.getElementById('feedback_form_url3'); $(".submitButton").click(function () { const nameValuet = namet.value; const phoneValuet = phonet.value; const feedbackformurl5Value = feedbackformurl3.value; // Получение значения checkbox var isChecked = $("#checkboxAgree").is(":checked"); // Проверка значения checkbox if (!isChecked) { // Вывод сообщения об ошибке alert("Пожалуйста, примите политику конфиденциальности."); return; // Прерываем выполнение функции } if (nameValuet == "" || phoneValuet == "") { $("#feedback_form_danger3").css("display", ""); } else { $("#feedback_form_danger3").css("display", "none"); $("#feedback_form_success3").css("display", ""); $.ajax({ type: "POST", url: "/local/components/main/send.form/templates/send.form-newdesignPartnersTop/ajax.php", caches: false, data: { NAME: nameValuet, PHONE: phoneValuet, }, dataType: "html", beforeSend: function () { $(".submitButton").prop("disabled", true); }, success: function (data) { if (!data) alert("Были ошибки, письмо не отправленно!"); else $("#form__top").trigger("reset"); $(".submitButton").prop("disabled", false); }, }); } }); }); |
$(document).ready(function () { const namet = document.getElementById('feedback_form_name3'); const phonet = document.getElementById('feedback_form_phone3'); const feedbackformurl3 = document.getElementById('feedback_form_url3'); $(".submitButton").click(function () { const nameValuet = namet.value; const phoneValuet = phonet.value; const feedbackformurl5Value = feedbackformurl3.value; // Получение значения checkbox var isChecked = $("#checkboxAgree").is(":checked"); // Проверка значения checkbox if (!isChecked) { // Вывод сообщения об ошибке alert("Пожалуйста, примите политику конфиденциальности."); return; // Прерываем выполнение функции } if (nameValuet == "" || phoneValuet == "") { $("#feedback_form_danger3").css("display", ""); } else { $("#feedback_form_danger3").css("display", "none"); $("#feedback_form_success3").css("display", ""); $.ajax({ type: "POST", url: "/local/components/main/send.form/templates/send.form-newdesignPartnersTop/ajax.php", caches: false, data: { NAME: nameValuet, PHONE: phoneValuet, }, dataType: "html", beforeSend: function () { $(".submitButton").prop("disabled", true); }, success: function (data) { if (!data) alert("Были ошибки, письмо не отправленно!"); else $("#form__top").trigger("reset"); $(".submitButton").prop("disabled", false); }, }); } }); });
<?php use PHPMailerPHPMailerPHPMailer; // Файлы phpmailer require 'phpmailer/PHPMailer.php'; require 'phpmailer/SMTP.php'; require 'phpmailer/Exception.php'; # проверка, что ошибки нет if (!error_get_last()) { // Переменные, которые отправляет пользователь $name = $_POST['name'] ; $phone = $_POST['phone']; // Формирование самого письма $title = "Заголовок письма"; $body = " <h2>Новое письмо</h2> <b>Имя:</b> $name<br> <b>Телефон:</b> $phone<br><br> "; // Настройки PHPMailer $mail = new PHPMailerPHPMailerPHPMailer(); $mail->isSMTP(); $mail->CharSet = "UTF-8"; $mail->SMTPAuth = true; //$mail->SMTPDebug = 2; $mail->Debugoutput = function($str, $level) {$GLOBALS['data']['debug'][] = $str;}; // Настройки вашей почты $mail->Host = 'smtp.mail.ru'; // SMTP сервера вашей почты $mail->Username = 'murin@fredtm.ru'; // Логин на почте // $mail->Password = '=========='; // Пароль на почте $mail->Password = '3p65pdztMft6QFeNmkrm'; // Пароль приложения $mail->SMTPSecure = 'ssl'; $mail->Port = 465; $mail->setFrom('murin@fredtm.ru', 'Name'); // Адрес самой почты и имя отправителя // Получатель письма $mail->addAddress('vitamin-971@yandex.ru'); // Отправка сообщения $mail->isHTML(true); $mail->Subject = $title; $mail->Body = $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); ?> |
<?php use PHPMailerPHPMailerPHPMailer; // Файлы phpmailer require 'phpmailer/PHPMailer.php'; require 'phpmailer/SMTP.php'; require 'phpmailer/Exception.php'; # проверка, что ошибки нет if (!error_get_last()) { // Переменные, которые отправляет пользователь $name = $_POST['name'] ; $phone = $_POST['phone']; // Формирование самого письма $title = "Заголовок письма"; $body = " <h2>Новое письмо</h2> <b>Имя:</b> $name<br> <b>Телефон:</b> $phone<br><br> "; // Настройки PHPMailer $mail = new PHPMailerPHPMailerPHPMailer(); $mail->isSMTP(); $mail->CharSet = "UTF-8"; $mail->SMTPAuth = true; //$mail->SMTPDebug = 2; $mail->Debugoutput = function($str, $level) {$GLOBALS['data']['debug'][] = $str;}; // Настройки вашей почты $mail->Host = 'smtp.mail.ru'; // SMTP сервера вашей почты $mail->Username = 'murin@fredtm.ru'; // Логин на почте // $mail->Password = '=========='; // Пароль на почте $mail->Password = '3p65pdztMft6QFeNmkrm'; // Пароль приложения $mail->SMTPSecure = 'ssl'; $mail->Port = 465; $mail->setFrom('murin@fredtm.ru', 'Name'); // Адрес самой почты и имя отправителя // Получатель письма $mail->addAddress('vitamin-971@yandex.ru'); // Отправка сообщения $mail->isHTML(true); $mail->Subject = $title; $mail->Body = $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); ?>
-
что может быть не так
Какая именно проблема?
Что приходит в ответ?
По js вижу, что вы не отменяет сабмит самой формы. Короче, по коду много нюансов в плане того, что пользователь намеренно может отправить вам форму на бекэнд и т.п.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для начала, если у вас проблемы с отправкой писем, важно проверить несколько ключевых моментов, которые могут стать причиной возникновения проблемы.
1. Проверьте настройки SMTP сервера: убедитесь, что вы правильно skonфигурировали SMTP сервер для отправки писем. Проверьте хост, порт, учетные данные (логин и пароль), шифрование и другие параметры, которые могут влиять на отправку писем.
$smtp_host = 'smtp.example.com'; $smtp_port = 587; $username = 'your_email@example.com'; $password = 'your_password'; $encryption = 'tls';
2. Проверьте спам-фильтры: иногда письма могут попадать в спам из-за некорректной настройки заголовков или содержания письма. Убедитесь, что ваше письмо не считается спамом и не блокируется фильтрами.
3. Проверьте логи: если у вас есть доступ к логам отправки писем, обязательно проверьте их на наличие ошибок или предупреждений, которые могут указать на причину проблемы.
4. Проверьте код: убедитесь, что ваш код отправки писем написан корректно и не содержит ошибок. Проверьте, что все переменные правильно подставляются в шаблон письма, что заголовки письма корректно формируются и что письмо отправляется на правильный адрес.
Если после выполнения всех этих шагов проблема с отправкой писем остается, рекомендуется обратиться к провайдеру услуг почтовой рассылки или администратору сервера для получения дополнительной помощи и диагностики проблемы.