Php не выводит сообщение после отправки письма из формы
Есть стандартная форма для отправки почты.
<form action="mail/contact_me.php" method="post">
<input type="text" name="name" placeholder="Ваше имя" required/>
<input type="email" name="email" placeholder="email" required/>
<input type="phone" name="phone" placeholder="Телефон" required/>
<textarea name="message" rows="5" placeholder="Сообщение" required></textarea>
<button class="btn btn-primary">Отправить</button>
</form>
Все переменные расписаны и обработаны - trim и тд.
php выглядит следующим образом:
<?php
$name = $_POST["name"];
$email = $_POST["email"];
$mess = $_POST["message"];
$phone = $_POST["phone"];
$name = htmlspecialchars($name);
$email = htmlspecialchars($email);
$mess = htmlspecialchars($mess);
$phone = htmlspecialchars($phone);
$name = urldecode($name);
$email = urldecode($email);
$mess = urldecode($mess);
$phone = urldecode($phone);
$name = trim($name);
$email = trim($email);
$mess = trim($mess);
$phone = trim($phone);
mail("[email protected]", "Заявка с сайта", "Имя: " . "$name" . "\n" . "Телефон: " . "$phone" . "\n" . "E-mail: " . "$email" . "\n\n" . "Сообщение: " . "\n" . "$mess");
if (mail == TRUE) {
echo "Заявка отправлена.";
} else {
echo "Ошибка отправки.";
}
?>
Почему не выводится сообщение об отправки?
Письмо при этом отправляется и приходит на почту!
Ответы (2 шт):
Функция mail() вернёт TRUE или FALSE, поэтому необходимо проверить с условием mail(...) === true
даже если он возвращает true, это не означает, что сообщение будет отправлено. Все, что делает mail (), это добавляет сообщение в очередь (используя sendmail или что - то другое, что вы установили в php.ini.
Нет надежного способа проверить, было ли сообщение отправлено на php. Поэтому Вам наверно придется просмотреть журналы почтового сервера.
Если письма приходят - нужно включить вывод ошибок на страницу и посмотреть, не падает ли mail() после отправки письма, не успев ничего вернутть. Поставьте в начало скрипта ini_set('display_errors',1);