我遇到了一个典型的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电子邮件本身运行良好(每天使用)。当我测试表单时,我会收到回复/消息,说谢谢,所以我肯定找到了PHP文件,但我的收件箱里什么都没有。
这是一个如此简单的代码,但我真的很困惑,不确定发生了什么。
任何帮助都将不胜感激。
电子邮件可能在服务器的邮件队列中被阻止,或者被电子邮件主机阻止为垃圾邮件。对于基于linux的系统,电子邮件通常记录在/var/logs目录中,并且在基于windows的服务器上应该有相应的目录。从这里你应该能够看到服务器是否将电子邮件发送到世界上。
代码似乎是正确的。真正的问题是php的邮件功能的使用。如果您查看官方文档,您可以了解传递给函数的参数必须满足特殊要求的必要性。此外,在Windows或Linux中使用email()也有一些不同。
我的建议是不要直接使用mail()
,而是使用库作为PHPMailer
发送https://github.com/PHPMailer/PHPMailer
您的代码是正确的!这似乎是邮件服务器的问题。尝试更改收件人的邮件地址,并检查您的服务器是否在黑名单中:http://mxtoolbox.com/blacklists.aspx