PHP表单不工作–;不接收电子邮件

PHP表单不工作–;不接收电子邮件,php,html,forms,Php,Html,Forms,我刚开始为一家新公司工作,以前的一位员工使用PHP开发了他们的网站。我不确定他说得对/不对。我了解大量的HTML和CSS,对PHP有一点了解,但不太了解。但我正在努力学习W3学校:) 我在我的网站上有一张联系表,但是每当我点击提交时,我都不会收到任何发送到我们电子邮件地址的信息,尽管它确实说已经提交了 提前感谢您的帮助 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/x

我刚开始为一家新公司工作,以前的一位员工使用PHP开发了他们的网站。我不确定他说得对/不对。我了解大量的HTML和CSS,对PHP有一点了解,但不太了解。但我正在努力学习W3学校:)

我在我的网站上有一张联系表,但是每当我点击提交时,我都不会收到任何发送到我们电子邮件地址的信息,尽管它确实说已经提交了

提前感谢您的帮助

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <title>Anchor Technology | Services</title>
    <?php include('includes/head.php'); ?>
    <style type="text/css">#maintext .error h2 {color: red;</style>
</head>
<body>
<div id="maincontainer">
<?php include('includes/header.php'); ?>
<?php include('includes/navigation.php'); ?>
    <div class="shadow">
        <div id="maintext">
            <h2>Help!</h2>
        <!--Form options start here-->
        <!--Small Form Here-->
            <h2><strong>Existing Client Form</strong></h2>
            <?php
                error_reporting(E_ERROR | E_WARNING | E_PARSE);
                $form_block = "
                <p>Required fileds are marked with an asterick (*)        </p>
                <form action=\"$_SERVER[php_self]\"method=\"POST\">
                <P>*Company Name:</p>
                    <input size=40 name=\"name\" value=\"$_POST[name]\"><br />    <br />
                <p>*Contact Name:</p>
                    <input size=40 name=\"ctname\" value=\"$_POST[ctname]\"><br /><br />    
                <P>*Request Title:</p>
                    <input size=40 name=\"title\" value=\"$_POST[title]\"><br /><br />
                <P>Description:</p>
                  <textarea cols=\"60\"rows=\"10\"name=\"description\">$_POST[description]</textarea><br /><br />
                <P>Computer Name:</p>
                    <input size=20 name=\"cpname\" value=\"$_POST[cpname]\"><br /><br />
                <p>User Name:</p>
                    <input size=40 name=\"uname\" value=\"$_POST[uname]\"><br /><br />  
                <P>Priority Level</p>
                    <select name=\"level\">
                        <option value=\"High\">High</option>
                        <option value=\"Medium\">Medium</option>
                        <option value-\"Low\" selected=\"default\">Low</option>
                    </select><br /><br />   
                <input type=\"hidden\" name=\"op\" value=\"ds\">        
                <input type=\"submit\" name=\"submit\" value=\"Submit\">    
            </form>";
            if ($_POST[op] != "ds") {
                //need to see form
                echo "$form_block";
                //check required fields
            } else if ($_POST[op] == "ds") {
                If (($_POST[name] == "") || ($_POST[ctname] == "") || ($_POST[title] == "")) {
                    $msg_err = "<div class=\"error\"<h2>    <strong>Please fill in all required fields</strong></h2></div>";
                    $send = "no";
                }
                if ($send != "no") {
                    //it's ok to send
                    // create msg variable containing the message that will be sent to the email recipient  
                    $msg .= "Company Name: $_POST[name]\n ";

                    // continue to concatenate the variable adding new pieces of information submitted

                    $msg .= "Company Name: $_POST[name]\n ";
                    $msg .= "Contact Name: $_POST[ctname]\n ";
                    $msg .= "Request Title: $_POST[title]\n ";              
                    $msg .="Description:$_POST[description]\n";             
                    $msg .= "Computer Name: $_POST[cpname]\n ";                 
                    $msg .= "User Name: $_POST[uname]\n ";              
                    $msg .= "Priority Level: $_POST[level]\n ";             

                    //Create variables to be used in the php Mail Function
                    $recipient = "help@anchortechnology.com";
                    $subject = "Help request from $_POST[name]";
                    $mailheaders = "From: $_POST[ctname] \n";
                    $mailheaders .= "Reply-To: $_POST[ctname]";

                    //send mail form
                    //Use mail Function to Send
                    mail($recipient, $subject, $msg, $mailheaders);

                    // show confirmation message
                    // echo statements will be shown when script executes

                    echo "<p>Thank you, $_POST[name]!</p>";
                    echo "<p>Your message was sent!</p>";
                    echo "<a href=\"../index.php\">Return Home</a>";
                } else if ($send == "no") {
                    //print error messages
                    echo "$msg_err";
                    echo "$form_block";
                }
            }
            ?>
            <br /><br />
        </div>
    </div>      
    <div class="shadow">        
        <div id="footer">
            <?php include('includes/footer.php'); ?>
        </div>
    </div>
</div>                  
</body>
</html>

锚定技术|服务
#错误h2{颜色:红色;
救命啊!
现有客户表格

首先,缩小问题的范围。您能从PHP发送任何邮件吗?请尝试使用simple mail()测试脚本发送简单消息

如果可行,那么在调用mail之前通过回显或var_dump()变量检查
邮件($recipient,$subject,$msg,$mailheaders);
部分代码

一个问题是根据成功返回布尔值true或false,但发布的脚本完全忽略了这一点,只是假设它正常。这不会导致电子邮件不发送,但会导致脚本报告它已发送,即使邮件()函数断然告诉您它不起作用。遗憾的是,文档本身从来没有提到过这一点,而且所有示例都显示了邮件,但没有尝试检查成功与否

部分原因是mail()不提供任何类型的有用错误消息,因此它通常只起作用或不起作用-如果函数返回true,则并不意味着它真的起作用。对于“任务关键型”电子邮件,不要单独使用mail()来确保获得重要消息或捕获重要数据


但是,这是发现问题的一个开始。首先确保PHP mail()功能正确,然后再开始。

好的,我从一位朋友那里了解了主要问题

我们使用的是IX Webhosting,有一个Linux和一个Microsoft服务器,每个服务器上都有几个站点。PHP站点被托管在Microsoft box上,据我所知,它没有设置为运行PHP,但Linux是

把它换了,再也没有问题了


谢谢大家的帮助!

如果搜索“PHP邮件不发送邮件”,您可以找到许多答案这里是这样。一切看起来都是光明正大的,你确定你的电子邮件客户端没有发现它是垃圾邮件吗?我建议只创建一个基本脚本,添加带有just to、subject和message的邮件功能,看看它是否发送。最好让合适的人为你的公司做这项工作:)这就是我要说的。谢谢@mjayt我检查过了出去,没有什么东西会被垃圾邮件抓到,这很好:)@MahanGm我知道,对吧?!非常感谢@BrianDHall我真的很感激所有的细节!我需要一点时间来理解你在说什么,并弄清楚:)但我会在这周完成并尽快回来。再次感谢。