我遇到了经典的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文件但是,我只是在我的收件箱中没有得到任何东西。
这么简单的代码我真的很困惑,也不确定发生了什么。
任何帮助都是真的很感激。
答案 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