PHP 联系表邮件功能不工作

PHP Contact Form Mail Function Not Working

我一直在尝试为一个网站实现 PHP 联系人,这似乎是我不应该坚持的事情,但我让 运行 陷入困境。我一直将我的 HTML 和 PHP 放在不同的文件中,我认为这是很好的做法,所以我的设置如下所示:

HTML(我的 index.php 文件)

<head>
    <?php include '../scripts/site.php' ?>
</head>

<form action='../scripts/site.php' method='post'>
    <input type=text class="formfields" placeholder="Name" name="name">
    <br><br>
    <input type=email class="formfields" placeholder="Email" name="contact_email">         <br><br>
    <textarea type=text placeholder="Tell Us About Your Project" name="message"></textarea>
    <br><br>
    <input class="submit" type="submit" value="Send">
</form>

PHP(我的脚本目录中的 site.php 文件)

<?php

if(isset($_POST['name']) && isset($_POST['contact_email']) && isset($_POST['message'])) {

echo $name = $_POST['name'];
echo $contact_email = $_POST['contact_email'];
echo $message = $_POST['message'];

if(!empty($name) && !empty($contact_email) && !empty($message){
    $to = 'tom.eldridge@hotmail.com';
    $subject = 'contact email';
    $body = $message;
    $headers = 'From: ' .$contact_email;

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

    if(mail($to, $subject, $body, $headers)){
        echo 'Thanks for contacting us!';
    }
    else{
        echo 'Message could not be sent';
    }
}
else{
    echo 'All fields are required';
}
}

?>

我觉得我在尝试让 HTML 和 PHP 相互通信时可能在我的代码中犯了结构性错误。我认为邮件程序本身很好,但我可能是错的。

我正在实际网站上尝试此操作,因此这不是 locahost/host 问题。 (是的,我意识到该表格不是远程安全的,我计划在我正确邮寄它后立即修复它。)

从 if 语句中删除 =。它应该是 (!empty()) 而不是 (!=empty())

此外,您从未在第二个 if 语句中关闭 ()

if((!empty($name)) && (!empty($contact_email)) && (!empty($message))){

上面一行可以解决你的很多问题。将其添加到您的脚本中。

如果您在表单的 action 属性中引用代码,则不必包含 PHP 代码。

此外,如果您能更具体地说明所看到的错误,我会更好地帮助您。

复习当前代码并消除任何可能的错误将引导您来到这里。试试这个,如果还有错误请告诉我。

<?php

    if(isset($_POST['name']) && isset($_POST['contact_email']) && isset($_POST['message'])) {

    $name = $_POST['name'];
    $contact_email = $_POST['contact_email'];
    $message = $_POST['message'];

    if(!empty($name) && !empty($contact_email) && !empty($message){
        $to = 'tom.eldridge@hotmail.com';
        $subject = 'contact email';
        $body = $message;
        $headers = 'From: ' .$contact_email;

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

        if(mail($to, $subject, $body, $headers)){
            echo 'Thanks for contacting us!';
        }
        else{
            echo 'Message could not be sent';
        }
    }
    else{
        echo 'All fields are required';
    }
    }

        ?>

在PHP中,使用isset或empty时使用NOT EQUAL,其实就是下面这样;

if(!empty()){
if(!isset()){

您的用法对于比较值是正确的,例如在以下情况中;

if($var1 != $var2){

这里可能还有一些有用的信息; http://php.net/manual/en/language.operators.comparison.php 但同时这应该对您有所帮助。