[PHP] Почему не работает mail()?

Есть вот такой скрипт. Делаю сайт, что-то вроде ask.fm или sprashivay.ru

Нужно сделать по E-Mail подтверждение пользователя, если оно не было совершенно (в базе данных генерируется рандомный код в отдельной колонке и на email приходит этот код).
Но функция mail() не работает ни на локалке, ни на хостинге.
Проверял несколько старых скриптов, они тоже не работают..
Да и на регистрации тоже ничего не работает(

<?php
if (isset($_POST['k'])){
    $result = mysqli_query($dbconnect, 'SELECT * FROM users WHERE name = "'.$_POST['k'].'"');
    $res = mysqli_fetch_assoc($result);
    $cnt = mysqli_num_rows($result);
    if ($cnt){
        if ($res['validate']){
            $subject = 'Подтверждение аккаунта пользователя!';

            $message = '<table style="font-family: Verdana; background: white;">
    <tr><td><h1 style="color: #dbdbdb;">Подтвердите аккаунт на сайте!</h1></td></tr><hr style="margin-top: -20px; border:1px solid #dbdbdb">
    <tr><td style="color: #aaa">Вы запросили подтверждение вашего аккаунта! Пожалуйста перейдите по ссылке ниже для продолжения! Всего самого хорошего, администрация!</td></tr><hr style="margin-top: 20px; border:1px solid #dbdbdb">
    <tr><td style="color: #909090">Перейдите по ссылке для завершения подтверждения: </td></tr>
    <tr><td style="color: #909090"><a href="http://'.$domain.'/confirm/'.$res['validate'].'/'.$res['name'].'"></a></td></tr><hr style="margin-top: 20px; border:1px solid #dbdbdb">
    <tr><td style="color: #909090; font-size: 16px;">Внимание не отвечайте на это письмо! Оно было сгенерированно автоматически!</td></tr>
</table>';

            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=utf8' . "\r\n";
            $headers .= 'To: '.$res['name'].' <'.$res['email'].'>' . "\r\n";
            $headers .= 'From: no-reply@ucs.ru' . "\r\n";

            mail($res['email'],$subject, $message, $headers);
        }
    }
    if (!$cnt){
        echo "Пользователь не найден, сожалеем об этом..";
    }
}
else { ?>
    <form method="post">Логин для подтверждения: <input name="k" type="text"/><input type="submit"/></form>
<?php } ?>
  • Вопрос задан
  • 2791 просмотр
Пригласить эксперта
Ответы на вопрос 4
svd71
@svd71
может нужно сначала установить мэил-сервер на локалке или на хостинге?
Ответ написан
DobroFenix
@DobroFenix
Советую лучше использовать библиотеку swiftmailer для этих дел. Шлём сообщения с smtp сервера gmail'а.
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
PhpMailer для отправки по SMTP.
А для отправки через mail() поставьте exim4, должно заработать.
Ответ написан
Комментировать
@kazin8
На локале не знаю, что с почтовиком..
А вот на хостинге советую почитать их документацию. Не раз сталкивались с проблемой, что их фильтры не пропускают письма с "поддельным" полем from.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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