如何为我的PHP联系人表单启用SMTP?

如何为我的PHP联系人表单启用SMTP?,php,forms,email,smtp,contact,Php,Forms,Email,Smtp,Contact,我已经在我的网站上成功地为我的联系人表单设置了一个php脚本,但我最近发现我的服务器提供商不接受php。相反,我使用SMTP 谁能帮帮我,因为这对我来说是新鲜事。我尝试过使用其他脚本,但无法实现它 这是我的php代码: <?php /* Set e-mail recipient */ $myemail = "mail@louisreed.co.uk"; /* Check all form inputs using check_input function */ $name = check

我已经在我的网站上成功地为我的联系人表单设置了一个php脚本,但我最近发现我的服务器提供商不接受php。相反,我使用SMTP

谁能帮帮我,因为这对我来说是新鲜事。我尝试过使用其他脚本,但无法实现它

这是我的php代码:

<?php
/* Set e-mail recipient */
$myemail = "mail@louisreed.co.uk";

/* Check all form inputs using check_input function */
$name = check_input($_POST['name'], "Your Name");
$email = check_input($_POST['email'], "Your E-mail Address");
$subject = check_input($_POST['subject'], "Message Subject");
$message = check_input($_POST['message'], "Your Message");

/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("Invalid e-mail address");
}
/* Let's prepare the message for the e-mail */

$subject = "Someone has sent you a message";

$message = "

Someone has sent you a message using your contact form:

Name: $name
Email: $email
Subject: $subject

Message:
$message

";

/* Send the message using mail() function */
mail($myemail, $subject, $message);

/* Redirect visitor to the thank you page */
header('Location: http://louisreed.co.uk');
exit();

/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}

function show_error($myError)
{
?>
<html>
<body>

<p>Please correct the following error:</p>
<strong><?php echo $myError; ?></strong>
<p>Hit the back button and try again</p>

</body>
</html>
<?php
exit();
}
?>

我查了一些想法。我想你至少可以试试下面的方法。我知道你的主机不支持php,这让人难以置信。所以可能是别的什么地方出了问题。您使用的主机是什么

<?php
if($_POST) {
    //Strip user input
    function sanitize($value) {
        //Escape the user input and then strip all html tags
        //mysql_* is not recommended but I guess you don't store data in a database
        $value = mysql_real_escape_string(strip_tags($value));
        //Return the sanitized user input
        return $value;
    }

    //To display all errors
    function errors($error) {
        echo '<ul class="error">';
        foreach($error as $fail) {
            echo '<li>'.$fail.'</li>';
        }
        echo '</ul>';
    }

    //All the input fields
    $name = sanitize($_POST['name']);
    $email = sanitize($_POST['email']);
    $subject = sanitize($_POST['subject']);
    $message = sanitize($_POST['message']);

    //Check if there are no empty fields
    if(!empty($name), !empty($email) && !empty($subject) && !empty($message)) {
        if(strlen($name) <= 3) {
            $error[] = 'Name '.$name.' is too short';
        }

        if(strlen($email) <= 3) {
            $error[] = 'Email '.$email.' is too short';
        }

        if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $error[] = 'Email '.$email.' is not a valid email';
        }

        if(strlen($subject) <= 3) {
            $error[] = 'Subject '.$subject.' is too short';
        }

        if(strlen($message) <= 8) {
            $error[] = 'Message is too short';
        }

        //If there are no errors
        if(empty($error)) {
            $to = "mail@louisreed.co.uk"; //The email you want to send it to
            //Subject already set
            $headers = "FROM: My site"; //Sets the headers
            //The message for the email
            $message = "Someone has sent you a message using your contact form:\r\n\r\nName: ".$name."\r\nEmail: ".$email."\r\nSubject: ".$subject."\r\n\r\nMessage: ".$message;
            $mail = mail($to, $subject, $message, $headers);

            //If the mail has been send
            if($mail) {
                header('Location: http://louisreed.co.uk/index.php?success');
                exit();
            }
        }
    } else {
        $error[] = 'There are empty fields';
    }

    //If there are errors show them
    if(!empty($error)) {
        echo errors($error);
    }
}

//If issset success (from the header()) display a message
if(isset($_GET['success'])) {
    echo '<p>Thank you for your message</p>';
}
?>
<form role="form" action="" method="post">
    <div class="row">
        <div class="form-group col-xs-12 floating-label-form-group">
            <label for="name">Name</label>
            <input class="form-control" type="text" id="name" name="name" placeholder="Name">
        </div>
    </div>
    <div class="row">
        <div class="form-group col-xs-12 floating-label-form-group">
            <label for="email">Email Address</label>
            <input class="form-control" type="email" id="email" name="email" placeholder="Email Address">
        </div>
    </div>
    <div class="row">
        <div class="form-group col-xs-12 floating-label-form-group">
            <label for="subject">Subject</label>
            <textarea placeholder="Subject" class="form-control" id="subject" name="subject" rows="1"></textarea>
        </div>
    </div>
    <div class="row">
        <div class="form-group col-xs-12 floating-label-form-group">
            <label for="message">Message</label>
            <textarea placeholder="Message" class="form-control" id="message" name="message" rows="5"></textarea>
        </div>
    </div>
    <br>
    <div class="row">
        <div class="form-group col-xs-12">
            <button type="submit" class="btn btn-lg btn-primary">Send</button>
        </div>
    </div>
</form>

smtp与您的代码无关,它位于本地主机的php.ini文件中。如果您在使用SMTP的php中使用mail(),那么如果您的提供商不支持php,您会遇到一个问题谢谢您的回复,对不起,我听起来像个傻瓜,但是我的php.ini文件中有什么我已经搜索过了,但我甚至找不到这个文件。干杯并不是说你找不到它。问题是你的主机控制着这个文件。是的,我的提供商不支持php,我还有什么其他选择?@SuperDJ这是我想要避免的!我希望有一个好的联系方式,而不是使用mailto:
<?php
if($_POST) {
    //Strip user input
    function sanitize($value) {
        //Escape the user input and then strip all html tags
        //mysql_* is not recommended but I guess you don't store data in a database
        $value = mysql_real_escape_string(strip_tags($value));
        //Return the sanitized user input
        return $value;
    }

    //To display all errors
    function errors($error) {
        echo '<ul class="error">';
        foreach($error as $fail) {
            echo '<li>'.$fail.'</li>';
        }
        echo '</ul>';
    }

    //All the input fields
    $name = sanitize($_POST['name']);
    $email = sanitize($_POST['email']);
    $subject = sanitize($_POST['subject']);
    $message = sanitize($_POST['message']);

    //Check if there are no empty fields
    if(!empty($name), !empty($email) && !empty($subject) && !empty($message)) {
        if(strlen($name) <= 3) {
            $error[] = 'Name '.$name.' is too short';
        }

        if(strlen($email) <= 3) {
            $error[] = 'Email '.$email.' is too short';
        }

        if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $error[] = 'Email '.$email.' is not a valid email';
        }

        if(strlen($subject) <= 3) {
            $error[] = 'Subject '.$subject.' is too short';
        }

        if(strlen($message) <= 8) {
            $error[] = 'Message is too short';
        }

        //If there are no errors
        if(empty($error)) {
            $to = "mail@louisreed.co.uk"; //The email you want to send it to
            //Subject already set
            $headers = "FROM: My site"; //Sets the headers
            //The message for the email
            $message = "Someone has sent you a message using your contact form:\r\n\r\nName: ".$name."\r\nEmail: ".$email."\r\nSubject: ".$subject."\r\n\r\nMessage: ".$message;
            $mail = mail($to, $subject, $message, $headers);

            //If the mail has been send
            if($mail) {
                header('Location: http://louisreed.co.uk/index.php?success');
                exit();
            }
        }
    } else {
        $error[] = 'There are empty fields';
    }

    //If there are errors show them
    if(!empty($error)) {
        echo errors($error);
    }
}

//If issset success (from the header()) display a message
if(isset($_GET['success'])) {
    echo '<p>Thank you for your message</p>';
}
?>
<form role="form" action="" method="post">
    <div class="row">
        <div class="form-group col-xs-12 floating-label-form-group">
            <label for="name">Name</label>
            <input class="form-control" type="text" id="name" name="name" placeholder="Name">
        </div>
    </div>
    <div class="row">
        <div class="form-group col-xs-12 floating-label-form-group">
            <label for="email">Email Address</label>
            <input class="form-control" type="email" id="email" name="email" placeholder="Email Address">
        </div>
    </div>
    <div class="row">
        <div class="form-group col-xs-12 floating-label-form-group">
            <label for="subject">Subject</label>
            <textarea placeholder="Subject" class="form-control" id="subject" name="subject" rows="1"></textarea>
        </div>
    </div>
    <div class="row">
        <div class="form-group col-xs-12 floating-label-form-group">
            <label for="message">Message</label>
            <textarea placeholder="Message" class="form-control" id="message" name="message" rows="5"></textarea>
        </div>
    </div>
    <br>
    <div class="row">
        <div class="form-group col-xs-12">
            <button type="submit" class="btn btn-lg btn-primary">Send</button>
        </div>
    </div>
</form>