PHP mail()不接受变量

时间:2014-11-18 04:28:58

标签: php email

由于某种原因,$ name,$ email和$ message变量没有被传递到$ msgcontents和$ headers变量中。填写表单并单击“提交”后,我的收件箱中的邮件如下所示:

主题:来自联系表格的消息

发件人:未知发件人

日期:星期一,2014年11月17日下午7:44

致:myemail@myemail.com

名称:
电子邮件:
消息:

我已经使用var_dump()查看我的变量是否在点击提交后被填充,但是由于某些原因它们没有被$ msgcontents和$ headers选中。我哪里错了?

这是我的代码:

<?php

        $name = trim(htmlspecialchars($_POST['name'], ENT_QUOTES));
        $email = trim($_POST['email']);
        $message = trim(htmlspecialchars($_POST['message'], ENT_QUOTES));

            $to = "myemail@myemail.com";
            $subject = "Message From Contact Form";
            $msgcontents = "Name: $name <br>  Email: $email <br>  Message: $message";
            $headers = array("MIME-VERSION: 1.0",
                             "Content-type: text/html; charset=iso-8859-1",
                              "From: $name <$email>",
                              "Reply-To: contact@info84.com",
                              "X-Mailer: PHP/" . PHP_VERSION
                             );
            $headers = implode("\r\n", $headers);      
            $mailsent = mail($to, $subject, $msgcontents, $headers);                  
    ?>

    <!DOCTYPE html>
    <html>
    <head>
    </head>
    <body>

    <form id="contactform" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" novalidate> 

    <input type="text" name="name" placeholder="Your Name">
    <input type="email" name="email"  placeholder="Your Email">
    <textarea name="message" placeholder="Your Message"></textarea>
    <input type="submit" name="submitform" value="send">
    </form>

<?php
var_dump($to); 
?>
<br>
<?php
var_dump($subject);
?> 
<br>
<?php
var_dump($msgcontents); 
?>
<br>
<?php
var_dump($headers); 
?>
<br>
<?php
var_dump($name); 
?>
<br>
<?php
var_dump($email); 
?>
<br>
<?php
var_dump($message); 
?>

    </body>
    </html>

1 个答案:

答案 0 :(得分:0)

我认为您检查从首页加载(没有表单)

发出的消息

尝试打包您的电子邮件发送代码,如下所示:

if (isset($_POST['submitform'])) {
  //...
  mail(...);
  //...
}

然后,当页面加载时未发送任何消息,但是当您单击提交按钮时,已发送邮件