Проблемы с отправкой контактной формы на личную электронную почту

Я пытаюсь сделать контактную форму, используя HTML и PHP. PHP для формы ниже:

<?php
    if(isset($_POST['email'])) {

        // Email to information
        $email_to ="personalemail@email.com";
        $email_subject ="Contact";
        $email_from ="Person";


        // Error code
        function died($error) {
            echo "We are sorry, but there were error(s) found with the form you submitted.";
            echo "These errors appear below.<br/><br/>";
            echo $error. "<br/><br/>";
            echo "Please go back and fix these errors.<br/>";
            die();
        }

        // Validation
        if(!isset($_POST['fname']) || !isset($_POST['lname']) || !isset($_POST['email']) || !isset($_POST['message'])) {
            died('We are sorry but there appears to be a problem with the form you submitted.');    
        }

        $fname = $_POST['fname'];
        $lname = $_POST['lname'];
        $email = $_POST['email'];
        $message = $_POST['message'];

        $error_message = "";


        if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $error_message .= 'The email address you entered does not appear to be valid.<br/>';
        }

        $string_exp = "/^[A-Za-z.'-]+$/";
        if(!preg_match($string_exp, $fname)) {
            $error_message .= 'The first name you entered does not appear to be valid.<br/>';
        }

        if(!preg_match($string_exp, $lname)) {
            $error_message .= 'The last name you entered does not appear to be valid.<br/>';
        }

        if(strlen($message) < 2) {
            $error_message .= 'The message you entered does not appear to be valid.<br/>';
        }

        if(strlen($error_message) > 0) {
            died($error_message);
        } 
        $email_message = "Form details below.\n\n";

        function clean_string($string) {
            $bad = array("content-type", "bcc:", "to:", "cc:", "href");
            return str_replace($bad, "", $string);
        }

        $email_message .= "Name:" . clean_string($fname) . clean_string($lname) . "\n";
        $email_message .= "Email:" . clean_string($email) . "\n";
        $email_message .= "Message:" . clean_string($message) . "\n";

        // Create email headers
        $headers = 'From: ' .$email_From . "\r\n". 'Reply-To:' . $email. "\r\n" . 'X-Mailer: PHP/' . phpversion();
        mail($email_to, $email_subject, $email_message, $headers);
        ?>

        Thankyou for contacting me. I will be in contact with you shortly. <br/>
        Please click <a href="index.html">here</a> to go back to the main website
<?php
    }
?>

Проблема в том, что при отправке формы она никогда не отправляет электронное письмо на мой личный адрес электронной почты. Что-то еще, что я должен настроить с веб-хостингом, или проблема только в коде? Я провел некоторое исследование о соответствующем коде для вставки и перепробовал много разных вариантов, но ни один из них не работает.

1 ответ

Формы, отправляющие электронную почту, подвержены ошибкам, и, что еще хуже, если что-то идет не так, ни вы, ни конечный пользователь обычно не получают сообщение об ошибке. Они просто будут думать, что ваша служба поддержки не отвечает. Вещи, которые идут не так, как надо: почтовый сервер веб-сервера отключен или неправильно настроен, прием почтового ящика заполнен, спам-фильтр использует электронную почту, правила почтового сервера веб-сервера меняются и выбрасываются.

Я рекомендую размещенную в облаке форму, которая хранит отправленные формы и уведомляет вас по электронной почте, но электронная почта не является основным хранилищем данных.

Что-то вроде этого, возможно, имеет бесплатный план: http://www.wufoo.com/features/

Другие вопросы по тегам