PHP提交错误

时间:2015-11-20 11:17:35

标签: php html forms email

我遇到了经典的PHP表单提交错误。我之前测试过代码,现在再次测试它似乎正在工作,电子邮件永远不会到来。

这是HTML(我出于安全原因改变了网站/电子邮件地址)

<!-- Contact Form -->
<form method="post" action="http://example.net/assets/mail/mail.php">
  <div class="row 50%">
    <div class="6u 12u(mobile)"><input type="text" name="name" placeholder="Name" />
    </div>
  <div class="6u 12u(mobile)"><input type="email" name="email" placeholder="Email" />
  </div>
</div>
<div class="row 50%">
 <div class="12u"><textarea name="message" placeholder="Message" rows="6"></textarea>
 </div>
</div>
<div class="row">
 <div class="12u">
 <ul class="actions">
 <li>
    <input type="submit" value="Send Message" />
 </li>
 </ul>
   </div>
 </div>
</form>

这是PHP文件:

<?php $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $formcontent="From: $name \n Message: $message";
    $recipient = "es@example.net";
    $subject = "Contact Form";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    echo "Thank You!";
?>

PHP文件位于HTML链接到的同一位置:http://example.net/assets/mail/mail.php,电子邮件本身工作正常(每天使用它)。当我测试表单时,我得到echo / message说谢谢,所以肯定是找到PHP文件但是,我只是在我的收件箱中没有得到任何东西。

这么简单的代码我真的很困惑,也不确定发生了什么。

任何帮助都是真的很感激。

3 个答案:

答案 0 :(得分:0)

电子邮件可能会被阻止在服务器的邮件队列中,或被电子邮件主机阻止为垃圾邮件。对于基于Linux的系统,电子邮件通常记录在/ var / logs目录中,并且在基于Windows的服务器上应该有相应的电子邮件。从这里,您应该能够看到服务器是否将电子邮件发送到世界各地。

答案 1 :(得分:0)

代码似乎是正确的。 真正的问题是使用php的邮件功能。如果查看official documentation,您可以看到传递给函数的参数必须满足特殊要求。 此外,使用带有Windows或Linux的email()也有一些区别。

我的建议是不要使用直接mail(),而是使用库PHPMailer发送https://github.com/PHPMailer/PHPMailer

答案 2 :(得分:0)

你的代码是对的!这似乎是一个邮件服务器问题。尝试更改收件人邮件地址,并检查您的服务器是否在黑名单中:http://mxtoolbox.com/blacklists.aspx