PHP: Не работает mail()

12
K
На сайте с 10.10.2010
Offline
56
2341

Добрый вечер.

Что-то не работает функция mail(), хотя на хостинге есть возможность отправлять почту (тестил более примитивным).

Форма:

<form class="mg-t-sm" role="form" method="post" action="php/rsvp.php" id="rsvpForm">

<div class="form-group">
<label class="sr-only" for="yourName">Ваше полное имя</label>
<input class="form-control" name="yourName" type="text" id="yourName" placeholder="Ваше полное имя" required>
</div>
<div class="form-group">
<label class="sr-only" for="yourEmail">Ваш email адрес</label>
<input class="form-control" name="yourMail" type="email" id="yourEmail" placeholder="Ваш email адрес" required>
</div>
<div class="form-group">
<label class="sr-only" for="yourGuests">Количество гостей</label>
<input class="form-control" name="yourGuests" type="text" id="yourGuests" placeholder="Количество гостей" required>
</div>
<div class="form-group">
<label class="sr-only" for="yourMessage">Ваши пожелания молодоженам</label>
<input class="form-control" name="yourReal" type="hidden" id="yourReal">
</div>
<div class="form-group">
<textarea class="form-control" name="yourMessage" id="yourMessage" placeholder="Ваши пожелания молодоженам" rows="6"></textarea>
</div>
<div class="submit-wrap">
<button class="btn btn-primary btn-lg" type="submit">Отправить</button>
</div>
<div id="successMsg" class="hidden">
<br>
<div class="alert alert-success">
<p>Thanks, your message has been sent!</p>
</div>
</div>
</form>

<?php 


$to = "adobe-master@ukr.net"; // add your email address
$subject = "RSVP form submission"; // the subject of emails

/* ------------------------------------------------------------------ */

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

$name = check_input($_POST['name']);
$email = check_input($_POST['email']);
$guests = check_input($_POST['guests']);
$message = check_input($_POST['message']);
$human = check_input($_POST['human']);

if (empty($human)) {
$headers = "From: " . $to . "\r\n";
$headers .= "Reply-To: ". $email . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

$body = "<html><body>";
$body .= "<h1>" . $subject . "</h1>";
$body .= "<p><strong>Name: </strong>" . $name . "</p>";
$body .= "<p><strong>E-mail: </strong>" . $email . "</p>";
$body .= "<p><strong>Guests: </strong>" . $guests . "</p>";
$body .= "<p>" . strip_tags($message) . "</p>";
$body .= "</body></html>";

if (!empty($to) && !empty($subject) && !empty($name) && !empty($email) && !empty($guests) && filter_var($email, FILTER_VALIDATE_EMAIL) && !empty($message)) {
mail($to, $subject, $body, $headers);
echo("success");
}
} else { echo("success"); }
}

function check_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = strip_tags($data);
return $data;
}
?>

Буду благодарен за помощь!

tommy-gung
На сайте с 22.11.2006
Offline
304
#1

что в логах?

Здесь не могла быть ваша реклама
дани мапов
На сайте с 06.09.2012
Offline
204
#2

То есть mail() все-таки работает на хостинге, но в скрипте не срабатывает? Тогда попробуйте, например сначала в функции "check_input" временно закомментировать:


$data = htmlspecialchars($data);
Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
S
На сайте с 30.09.2016
Offline
469
#3

А что насчёт политики антиспама? Сейчас на почтовых сервисах модно сразу отвергать письма, у которых домен адреса отправителя не совпадает с доменом, откуда реально пришло письмо. Надо, чтобы "From" было "adobe-master@ваш_домен".

Или MX-запись проверяйте и корректируйте.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
A
На сайте с 23.11.2016
Offline
7
#4

mail($to, $subject, $body, $headers);

echo("success");

лучше проверяйте отработала функция или нет вот так:

if(mail($to, $subject, $body, $headers)){echo("success");} 
K
На сайте с 10.10.2010
Offline
56
#5
tommy-gung:
что в логах?

Нету логов -_-

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

Все остальное проверил, пробовал отправлять с внутренней почты, добавил проверку if как рекомендовали ниже, все равно успешно :)

Но на деле не успешно.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#6

На какую почту пробуете отправлять? Созданную на этом же хостинге или крупные сервер майлру или гмайл?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
S
На сайте с 30.09.2016
Offline
469
#7

Если внутренняя почта на домене, а тестируете с субдомена, то всё равно может не пройти из-за политики антиспама, если MX-запись не настроена.

tommy-gung
На сайте с 22.11.2006
Offline
304
#8

написать хостеру. Судя по всему используется обычный виртуалхост

K
На сайте с 10.10.2010
Offline
56
#9
tommy-gung:
написать хостеру. Судя по всему используется обычный виртуалхост

Проблема в другом.

Ведь мой другой скрипт на этом же хостинге работает и все отправляет и приходит.

S
На сайте с 30.09.2016
Offline
469
#10

Что касается Вашего скрипта, то вообще непонятно, как он может работать. Там полное несовпадение полей формы отправки и соответствующих ключей $_POST.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий