我正在使用PHP脚本通过电子邮件发送表单的内容。我希望脚本在发送电子邮件后重定向到另一个html页面,但它似乎无法正常工作。这就是我所拥有的:
<?php
// Email to...
$email_to = "xyz@someDomain.co.uk";
// Get the form components
$name = $_GET['name'];
$email_from = $_GET['email'];
$email_subject = $_GET['message-subject'];
$message = $_GET['message'];
// Create the message
$email_message = $message . "\n\n" . $name;
// Create email headers
$headers = 'From: ' . $email_from."\r\n".
'Reply-To: ' . $email_from."\r\n".
'X-Mailer: PHP/' . phpversion().
'Location: Message-Recieved.html';
// Send the email
@mail($email_to, $email_subject, $email_message, $headers);
?>
请有人建议为什么这不起作用?
答案 0 :(得分:6)
这种情况下的标题是电子邮件标题,而不是服务器标题。
试试这样:
<?php
....
// Create email headers
$headers = 'From: ' . $email_from."\r\n".
'Reply-To: ' . $email_from."\r\n".
'X-Mailer: PHP/' . phpversion();
// Send the email
if ( @mail($email_to, $email_subject, $email_message, $headers) ) {
header('location: http://yoursite.com/Message-Recieved.html');
}
?>
答案 1 :(得分:2)
您正在尝试添加
Location: Message-Received.html
到mail headers列表,并且不支持标题。不过它是HTTP header,您可以通过Header()
发送:
Header( 'Location: Message-Received.html');
根据RFC 2616(wikipedia也有一些信息)Location
:
需要一个完整的绝对URI来重定向最流行的 Web浏览器允许传递相对URL作为a的值 位置标题。
因此,您应该使用完整路径(以http://
开头)作为参数。
答案 2 :(得分:1)
这是因为你没有正确调用标题
使用
header('Location: Message-Recieved.html');
在mail()
之后
像
@mail($email_to, $email_subject, $email_message, $headers);
header('Location: http://yourproject.com/Message-Recieved.html');
答案 3 :(得分:0)
您似乎是在电子邮件上设置标题,而不是在网页上。从Loction
变量中移除$headers
标题,然后将其置于header()
调用中。