我有一个简单的PHP表单用于联系目的。但是,它不会在提交后发送电子邮件或转到正确的页面。它改为重定向到mail.php。
我名为contact.php的联系表格如下:
<form id="contact-form" action="mail.php" method="POST">
<fieldset>
<label><span class="text-form">Your Name:</span> <input type="text" name="name"></label>
<label><span class="text-form">Your Email:</span><input type="text" name="email"></label>
<label><span class="text-form">Your Contact No:</span><input type="text" name="contact"></label>
<div class="wrapper">
<div class="text-form">Your Message:</div>
<textarea name="message" rows="6" cols="25"></textarea><br />
<div class="clear">
</div>
<div class="buttons">
<a class="button" href="#"><input class="button" type="submit" value="Send"></a>
<a class="button" href="#"><input class="button" type="reset" value="Clear"></a>
</div>
</fieldset>
</form>
名为mail.php的php代码如下:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
&contact = $_POST['contact'];
$formcontent="From: $name \n Message: $message";
$recipient = "info@whatever.co.za";
$subject = "Contact form message";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header("Location:contact.php");
?>
我做错了什么。它只是不会将消息发送到电子邮件或重定向到正确的页面??
答案 0 :(得分:3)
你的语法有点错误。第5行的&contact
应为$contact
。我假设您在生产服务器上,因此错误报告将被禁用,您将不会收到任何警告。
答案 1 :(得分:2)
尝试使用@之前的邮件功能
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$contact = $_POST['contact'];
$formcontent="From: $name \n Message: $message";
$recipient = "info@whatever.co.za";
$subject = "Contact form message";
$mailheader = "From: $email \r\n";
@mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header("location: contact.php");
?>
即使邮件功能产生任何问题,这也会让你通过。另外,请检查是否有任何其他标头未使用http://php.net/manual/en/function.headers-sent.php功能发送。
我强烈建议使用PHPMailer或其他类发送任何类型的电子邮件。
答案 2 :(得分:0)
请检查contact.php文件是否发生了从contact.php到mail.php的重定向
答案 3 :(得分:0)
我认为从您的服务器发送邮件可能会出现问题。 mail.php文件可能会绊倒邮件功能而不进行重定向。
在那里创建一个只包含php邮件功能的新文件(包含您的电子邮件地址和测试邮件)并从您的网络浏览器中浏览它,它会发送吗?
答案 4 :(得分:0)
尝试在脚本开头使用ob_start(),然后退出();标题之后(“位置:contact.php”);
像这样......<?php
ob_start();
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
&contact = $_POST['contact'];
$formcontent="From: $name \n Message: $message";
$recipient = "info@whatever.co.za";
$subject = "Contact form message";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header("Location: contact.php");
exit();
?>
答案 5 :(得分:0)
将mail.php更改为以下内容:
<?php
mail("info@whatever.co.za", "Contact form message", $_POST['message'], "From: ".$_POST['name']." <".$_POST['email'].">");
header("Location: contact.php");
?>