@losos_lapolosos

Как решить проблему с отправкой писем на почту?

Здравствуйте, возникла проблема с отправкой форм на почту через ajax. Письма не приходят на почту.
Ссылка на сайт: trifasada.ru
<div>Ваше Имя:</div>
<input type="text" name="name" id="name" value="" />

<div>Ваш E-mail <span>*</span>:</div>
<input type="text" name="email" id="email" value="" />

<div>Сообщение <span>*</span>:</div>
<textarea name="message" id="message"></textarea>

<div class="result"></div>

<a href="javascript: void(0);" id="submit">Отправить</a>


$(document).ready(function() {
	
		$("#submit").on("click", function() {
		
			var name = $("#name").val(); // Получаем имя
			var email = $("#email").val(); // Получаем e-mail
			var message = $("#message").val(); // Получаем сообщение
			
			$.ajax({
			
				url: "send.php", // Куда отправляем данные (обработчик)
				type: "post",

				data: {
					"name": name,
					"email": email,
					"message": message
				},

				success: function(data) {
				
					$(".result").html(data); // Выводим результат
					
				}
				
			});
			
		});
		
	});

<?php

        header("Content-Type: text/html; charset=utf-8");
        
        if(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) === "xmlhttprequest") {
        
                if(!isset($_POST["name"]) || !isset($_POST["email"]) || !isset($_POST["message"])) {

                        die();

                }
        
                function send_form($message) {
        
                        $mail_to = "mamcenn@gmail.ru"; // Адрес, куда отправляем письма
                        $subject = "Письмо с обратной связи"; // Тема письма
                        $headers = "MIME-Version: 1.0\r\n";
                        $headers .= "Content-type: text/html; charset=utf-8\r\n";
                        $headers .= "From: Система уведомлений <no-reply@".$_SERVER['HTTP_HOST'].">\r\n";

                        mail($mail_to, $subject, $message, $headers);
                
                }

                $name = strip_tags($_POST["name"]); // Имя
                $email = strip_tags($_POST["email"]); // E-mail
                $mess = strip_tags($_POST["message"]); // Сообщение

                if(!preg_match("|^([a-z0-9_.-]{1,20})@([a-z0-9.-]{1,20}).([a-z]{2,4})|is", strtolower($email))) { // Если e-mail пустой или невалиден

                        echo "E-mail указан некорректно.";

                        die();

                }

                if($mess == "") { // Если сообщение пустое

                        echo "Не указан текст сообщения.";

                        die();

                }

                if($name == "") { // Если имя не указано

                        $name = "Не указано";

                }

                $message = <<<HTML

                        <b>Имя отправителя</b>: {$name}<br>
                        <b>E-mail</b>: {$email}<br><br>
                        <b>Текст письма</b>: {$mess}

HTML;

                send_form($message); // Если ранее описанных ошибок нет - отправляем сообщение
                
                echo "Сообщение успешно отправлено!";

        } else {

                die();

        }

?>
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
glaphire
@glaphire Куратор тега PHP
PHP developer
1) с мобилки не вижу кнопки 'отправить', чтобы протестить форму
2) вместо mail() используйте PHPMailer, чтобы меньше страдать с отправкой писем)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы