Не отправляются письма php mail, что делаю не так?

Здравствуйте, не отправляются письма, возвращается ошибка, но она возвращается только если я укажу в заголовках "Content-Type: text/html; charset=utf-8", без этого всё работает, единственное теги в теле письма тогда не обрабатываются, вот полный код
<?php
    // $send = mail('seftomsk@gmail.com', 'Тема тестового сообщения', 'Тестовое сообщение');
    // if($send)
    //     echo 'Успешно';
    // else
    //     echo 'Ошибка';
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (isset($_POST['name']))
            $name = strip_tags($_POST['name']);
        if (isset($_POST['phone']))
            $phone = strip_tags($_POST['phone']);
        if(isset($_POST['position'])) {
            if($_POST['position'] == 2) {
                if(isset($_POST['email']))
                    $email = strip_tags($_POST['email']);
            }
        }
        if (isset($_POST['formData']))
            $formData = $_POST['formData'];
        $to = "seftomsk@gmail.com";
        $sendfrom   = "ведущий55.рф";
        $headers = "From: ведущий55.рф" . "\r\n" .
                    "Reply-To: ведущий55.рф" . "\r\n" .
                    "Content-Type: text/html; charset=utf-8" . "\r\n";
        // $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
        // $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
        // $headers .= "MIME-Version: 1.0\r\n";
        // $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
        $subject = "$formData";
        $message = "$formData
        <b>Имя отправителя:</b> $name\n
        <b>Телефон:</b> $phone\n
        <b>Email:</b> $email";
        $send = mail($to, $subject, $message, $headers);
        if ($send == 'true') {
            echo '<center>Спасибо за отправку вашего сообщения!</center>';
        }
        else {
            echo '<center><b>Ошибка. Сообщение не отправлено!</b></center>';
        }
    }
    else {
        http_response_code(403);
        echo "Попробуйте еще раз";
    }
?>
  • Вопрос задан
  • 420 просмотров
Пригласить эксперта
Ответы на вопрос 2
BOOMER_74
@BOOMER_74
Full-Stack разработчик
Swift Mailer / PHPMailer. mail не рекомендуется для отправки HTML!
Ответ написан
Комментировать
@seftomsk Автор вопроса
Короче, убрал я затею с html, в итоге вроде бы всё начало отправляться без этой строки как и говорил, НО когда указываю откуда сообщение в переменной $sendfrom и если она не совпадает с переменной $to, то сообщения также не отправляются, ошибку выдает (((
<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (isset($_POST['name']))
            $name = strip_tags($_POST['name']);
        if (isset($_POST['phone']))
            $phone = strip_tags($_POST['phone']);
        if(isset($_POST['position'])) {
            if($_POST['position'] == 2) {
                if(isset($_POST['email']))
                    $email = strip_tags($_POST['email']);
            }
        }
        if (isset($_POST['formData']))
            $formData = $_POST['formData'];

        $to = "seftomsk@gmail.com";
        $sendfrom   = "site.ru";
        $headers = "From: " . strip_tags($sendfrom) . "\r\n";
        $headers .= "Reply-To: " . strip_tags($sendfrom) . "\r\n";
        $subject = "$formData";
        $message .= "$formData\r\n";
        $message .= "Имя отправителя: " . $name . "\r\n";
        $message .= "Телефон отправителя: " . $phone . "\r\n";
        $message .= "Email отправителя: " . $email;

        
        // $to = "seftomsk@gmail.com";
        // $sendfrom   = "ведущий55.рф";
        // $headers  = "From: " . strip_tags($to) . "\r\n";
        // $headers .= "Reply-To: ". strip_tags($to) . "\r\n";
        // $headers .= "MIME-Version: 1.0\r\n";
        // $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
        // $subject = "$formData";
        // $message = "$formData
        // <b>Имя отправителя:</b> $name\n
        // <b>Телефон:</b> $phone\n
        // <b>Email:</b> $email";
        $send = mail($to, $subject, $message, $headers);
        if ($send == 'true') {
            echo '<center>Спасибо за отправку вашего сообщения!</center>';
        }
        else {
            echo '<center><b>Ошибка. Сообщение не отправлено!</b></center>';
        }
    }
    else {
        http_response_code(403);
        echo "Попробуйте еще раз";
    }
?>
Ответ написан
Ваш ответ на вопрос

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

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