Cualquier cosa que escribas con el comando 'header', está referido a la cabecera de la página. En otras palabras, está referido a antes de enviar la página.
Cuando un navegador solicita una web, primero se le envian las cabeceras de dicha web y luego la información propia de la web.
En tu caso, estas enviando texto (el script) de la web antes que la cabecera, por eso no puede ejecutar la cabecera. Si usas 'header', tienes que vigilar de NO ESCRIBIR NADA en la web antes de usarlo, ello incluye, ningún echo, ningún tag ni siquiera un espacio en blanco antes de la llamada a PHP.
Para solucionar esto, te propongo dos modos:
1) Quita el header y has la redirección con JavaScript
:
Código:
<?php if(isset($_POST['submit'])) {
$name=$_POST['nombre'];
$email=$_POST['email'];
$message=$_POST['mensaje'];
$msg = "DATOS RECIBIDOS:<br>\n";
$msg .= "Nombre: $name<br><br>\n";
$msg .= "E-mail: $email\n<br><br>";
$msg .= "Mensaje: $message\n<br><br>\n\n";
$to = "[email protected]";
$subject = "totilo mensaje";
$mailheaders = "MIME-Version: 1.0\r\n";
$mailheaders .= "Content-type: text/html; charset=utf-8\r\n";
$mailheaders .= "From: $email\n";
$mailheaders .= "Reply-To: $email\n\n";
mail($to, $subject, $msg, $mailheaders);
?>
<script language="JavaScript" type="text/javascript">
alert("Mensaje enviado");
location.href = "index2.php";
</script>
?>
2) Pon el alert en la página 'index2.php' y, por supuesto, borra el script de esta web de modo que quedaría así:
Código:
<?php if(isset($_POST['submit'])) {
$name=$_POST['nombre'];
$email=$_POST['email'];
$message=$_POST['mensaje'];
$msg = "DATOS RECIBIDOS:<br>\n";
$msg .= "Nombre: $name<br><br>\n";
$msg .= "E-mail: $email\n<br><br>";
$msg .= "Mensaje: $message\n<br><br>\n\n";
$to = "[email protected]";
$subject = "totilo mensaje";
$mailheaders = "MIME-Version: 1.0\r\n";
$mailheaders .= "Content-type: text/html; charset=utf-8\r\n";
$mailheaders .= "From: $email\n";
$mailheaders .= "Reply-To: $email\n\n";
mail($to, $subject, $msg, $mailheaders);
header('Location: index2.php');
}
?>
Tu eliges.
Un saludo ;)