Задать вопрос
@Leushinayliya

PHPMailer не отправляет письма на почту?

"use strict"

document.addEventListener('DOMContentLoaded', function () {
	const form = document.getElementById('forms');
	form.addEventListener('submit', formSend);

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

		let error = formValidate(form);

		let formData = new FormData(form);

		if (error === 0) {
			let response = await fetch('send.php', {
				method: 'POST',
				body: formData
			});
			if (response.ok) {
				let result = await response.json();
				alert(result.message);
				form.reset();
			} 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.getAttribute("type") === "checkbox" && input.checked === false) {
				formAddError(input);
				error++;
			} else {
				if (input.value === '') {
					formAddError(input);
					error++;
				}
			}
		}
		return error;
	}
	function formAddError(input) {
		input.classList.add('_error');
	}
	function formRemoveError(input) {
		input.classList.remove('_error');
	}
	
});

<?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);

	//От кого письмоindexland@bk.ru
	$mail->setFrom('indexland@bk.ru', 'indexland.ru');
	//Кому отправить
	$mail->addAddress('angelrude208@gmail.com');
	//Тема письма
	$mail->Subject = 'Привет! Это indexland.ru';

	

	//Тело письма
	$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>';
	  }
	

	$mail->Body = $body;

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

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

	//header('Refresh: 1; URL=index.html');
	header('Content-type: application/json');
	echo json_encode($response);
	
?>


выдает что все хорошо и response {"message":"\u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b!"}

И второй фопрос если в форме две кнопки отправить как понять на какую кликнул пользователь?
<form class="form-validate form" action="send.php" method="POST"  id="forms">
                            <div class="row">
                            <div class="form-group col-md-6">
                                <label for="name">Имя</label>
                                <input type="text" id="name" name="name"  class="form-control _req required name form-control-name"
                                    placeholder="Введите имя">
                            </div>
                            <div class="form-group col-md-6">
                                <label for="phone">Телефон</label>
                                <input id="phone" name="phone" class="form-control form-control-tel _req" type="tel" name="telephone"
                                    placeholder="Введите телефон" >
                            </div>
                            </div>
                            <div class="d-flex ">
                                <button class="btn btn-primary m-t-30 m-r-20" type="submit">Купить участок</button>
                            <button class="btn btn-primary m-t-30" type="submit">Продать участок</button>
                            </div>
                            
                        </form>
  • Вопрос задан
  • 559 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@5465
Возможно, есть несколько причин, по которым PHPMailer не отправляет письма:

Не правильно настроены параметры SMTP. Проверьте параметры SMTP-сервера в настройках PHPMailer. Возможно, нужно установить другой порт или проверить правильность имени пользователя и пароля.

Необходимо проверить, не заблокирован ли SMTP-сервер или IP-адрес, с которого вы пытаетесь отправить письмо. Некоторые SMTP-сервера блокируют запросы с некоторых IP-адресов для защиты от спама.

Возможно, на сервере, на котором запущен ваш сайт, запрещена отправка электронной почты. В этом случае свяжитесь с администратором сервера для проверки.

Чтобы понять, на какую кнопку нажал пользователь, можно использовать атрибут "name" у каждой кнопки и проверять его значение в PHP:

<button class="btn btn-primary m-t-30 m-r-20" type="submit" name="action" value="buy">Купить участок</button>
<button class="btn btn-primary m-t-30" type="submit" name="action" value="sell">Продать участок</button>


Затем в PHP можно проверить значение этого атрибута:

if ($_POST['action'] == 'buy') {
  // кнопка "Купить" нажата
} elseif ($_POST['action'] == 'sell') {
  // кнопка "Продать" нажата
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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