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

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

Нужен был скрипт для формы отправки писем с сайта, нашёл статью на хабре с рабочим кодом, решил потестить на хостинге(test.php нормально отправил письмо с хостинга), запустил форму, но письмо не приходит, в чём может быть проблема?
HTML
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=Edge">
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
	<title>Небольшая тестовая страница</title>
    <link href="css/bootstrap.min.css" rel="stylesheet"> 
	<link rel="stylesheet" href="css/styles.css" type="text/css">
	<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Oswald:400,300" type="text/css">
	
	<script type="text/javascript">
$(document).ready(function(){
    $("#form").submit(function() { //устанавливаем событие отправки для формы с id=form
            var form_data = $(this).serialize(); //собераем все данные из формы
            $.ajax({
            type: "POST", //Метод отправки
            url: "test.php", //путь до php фаила отправителя
            data: form_data,
            success: function() {
                   //код в этом блоке выполняется при успешной отправке сообщения
                   alert("Ваше сообщение отпрвлено!");
            });
    });
});    
</script>

	<!--[if lt IE 9]>
	<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
	<![endif]-->
</head>
<body>
    ХАО!
	<form id="form">
    <input type="text" name="name" required="required"/>
    <input type="text" name="phone" required="required"/>
    <input type="submit" value="Заказать звонок"/>
</form>


</body>
</html>

PHP
<?
if((isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['phone'])&&$_POST['phone']!="")){ //Проверка отправилось ли наше поля name и не пустые ли они
        $to = 'test@yandex.ru'; //Почта получателя, через запятую можно указать сколько угодно адресов
        $subject = 'Обратный звонок'; //Загаловок сообщения
        $message = '
                <html>
                    <head>
                        <title>'.$subject.'</title>
                    </head>
                    <body>
                        <p>Имя: '.$_POST['name'].'</p>
                        <p>Телефон: '.$_POST['phone'].'</p>                        
                    </body>
                </html>'; //Текст нащего сообщения можно использовать HTML теги
        $headers  = "Content-type: text/html; charset=utf-8 \r\n"; //Кодировка письма
        $headers .= "From: Отправитель <from@example.com>\r\n"; //Наименование и почта отправителя
        $mail($to, $subject, $message, $headers); //Отправка письма с помощью функции mail
}
?>
  • Вопрос задан
  • 1267 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@facir
попробуй просто создать один файлик например send.php и напиши там
<?
mail('test@yandex.ru', 'Тема', 'Сообщение');
?>

запусти его и глянь результат, думаю сразу найдешь ошибку.
если все отправилось, значит где то переменные неверные, если не отправится, значит хотинг не поддерживает, что вряд ли

только что проверил, полностью рабочий

$to = "test@yandex.ru";
        $subject = "Обратный звонок";
        $message = "<html><head><title>'.$subject.'</title></head>";
        $message .= "<body><p>Имя: ".$_POST['name']."</p><p>Телефон: ".$_POST['phone']."</p></body></html>";
        $headers  = "Content-type: text/html; charset=utf-8 \r\n";
        $headers .= "From: Отправитель <from@example.com>\r\n";
        mail($to, $subject, $message, $headers);
Ответ написан
Light777
@Light777
Developer
Это может быть из за хостинга, некоторые хостинги не отправляют. попробуйте использовать phpmailer, через smtp
Протестируйте у себя на локалке, если скрипт работает то письмо должно попасть в папку mailoutput в XAMPP
Ответ написан
@W2nn3ss Автор вопроса
Ну а код правильный?
я-то все грешу на него, так как обычный test.php с кодом
<?
   mail("test@yandex.ru", "Имя", "Телефон");
?>

нормально отправил письмо с хостинга.
Ответ написан
Ваш ответ на вопрос

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

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