PHP错误使mail()函数无法正常运行

时间:2013-12-03 16:54:39

标签: php email

对大多数人来说这可能是显而易见的,但我无法弄清楚错误;这是一个简单的HTML表单和用于发送电子邮件的PHP代码,包括发送消息的主机(域):

<?php
    $domainName = $_SERVER["SERVER_NAME"];
    if (isset($_REQUEST['email'])) {
        $name = $_REQUEST['name'] ; 
        $email = $_REQUEST['email'] ;
        $subject = 'Hello :)' ;
        $message .= 'E-mail: '.$_REQUEST['email']."\n"."\n" ;
        $message .= 'Host: '.$_REQUEST['dname']."\n"."\n" ;
        $message .= 'Name: '.$_REQUEST['name']."\n"."\n" ;
        $message .= 'Price: '.$_REQUEST['price']."\n"."\n" ;
        $message .= 'Message: '.$_REQUEST['message'] ;
        $to = "mail@domain.com" ; //e-mail
        $header = "From:$name <$email>" ;
        mail($to, $subject, $message, $header );
    }
?>
<html>
    <head>
        <title><?php echo $domainName; ?></title>           
    </head>
    <body> 
        <form method="post" id="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" >

            <label for="dname">Host</label>
            <input type="text" name="dname" id="dname" value=""/><!-- WORKS -->
            <!-- <input type="text" name="dname" id="dname" value="<?php echo $_SERVER['SERVER_NAME']; ?>"/> --> <!-- DOES NOT WORK -->

            <label for="name">Name</label>
            <input type="text" name="name" id="name" value=""/> 

            <label for="email">E-mail</label>
            <input type="text" name="email" id="email" value=""/>

            <label for="price">Price</label>
            <input type="text" name="price" id="price" value=""/>   

            <label for="message">Message</label>
            <textarea name="message" id="message"></textarea>

            <input type="submit" value="Send" name="submit" title="Send Message!" />

        </form>
    </body>
</html>

表单工作正常,直到我尝试将域插入第25行:

<input type="text" name="dname" id="dname" value="<?php echo $_SERVER['SERVER_NAME']; ?>"/>

这是表单停止运行的地方,无法弄清楚错误。任何帮助,简短的“我错过了什么......”;)将受到高度赞赏!谢谢!

1 个答案:

答案 0 :(得分:0)

该脚本没有PHP错误,导致mail()函数无法正常运行。问题是在使用“echo $ _SERVER ['SERVER_NAME']时在邮件正文中包含了一个URL(链接);”

邮件将毫无问题地发送,但邮件正文中的链接将激活垃圾邮件过滤器,邮件将卡在垃圾邮件文件夹中。从邮件中删除链接(主机/域)后,电子邮件将再次到达收件箱。这引起了混乱。