Hola, tengo un formulario web, pero por algún motivo hay dos campos (
Asunto y
Empresa) que no me los envía por correo, y creo que el problema está en que cuando le doy a enviar lo que hago es invocar una función JavaScript para validar el formulario, y casualmente, esos dos campos que no me envía, no los valido, ya que son opcionales, y no sé si por eso será el que no me lo envía.
No paro de darle vueltas pero no soy capaz de encontrar el dichoso fallo.
Os dejo tanto la parte del código HTML del formulario, como el JavaScript de validación, como el código PHP de envío por correo.
Código:
<script language="javascript" type="text/javascript">
<!--function Validar()
{if (document.contacto.Nombre.value == "")
{alert ('Necesitamos conocer su "Nombre"');
document.contacto.Nombre.focus();
return (false);
}
else if (document.contacto.eMail.value == "")
{alert ('Debe especificar una direccion de "Correo"');
document.contacto.eMail.focus();
return (false);
}
else if (document.contacto.Mensaje.value == "")
{alert ('Debe especificar un "Mensaje"');
document.contacto.Mensaje.focus();
return (false);
}
document.contacto.submit();
}
-->
</script>
Código HTML:
<form name="contacto" method="post" onsubmit="return Validar();" action="enviar.php">
<p align="left">
<label><span class="Estilo1">Nombre</span><br />
<input name="Nombre" class="campo" type="text" size="50" />
</label>
</p>
<p align="left">
<label><span class="Estilo1">E-mail</span><br />
<input name="eMail" class="campo" type="text" size="50" />
</label>
</p>
<p align="left">
<label><span class="Estilo1">Empresa</span><br />
<input name="Empresa" class="campo" type="text" size="50" />
</label>
</p>
<p align="left">
<label> <span class="Estilo1">Asunto</span><br />
<input name="Asunto" class="campo" type="text" size="50" />
</label>
</p>
<p align="left">
<label><span class="Estilo1">Mensaje</span><br />
<textarea name="Mensaje" class="campo" cols="48" rows="8"></textarea>
</label>
</p>
<input type="submit" name="Enviar" value="Enviar" />
<label>
<input type="reset" name="Borrar" value="Borrar" />
</label>
</form>
Código PHP:
<?php
ob_start(); // Buffering de salida. Para que no haya problemas luego con la funcion "header()"
$correo = $_POST['eMail']; // guardamos el campo email en una variable ya que lo utilizaremos en varias ocasiones en el script
$cuerpo = "<h1><u>Formulario de contacto</u></h1>";
$cuerpo .= "Nombre: <strong>" . $_POST['Nombre'] . "</strong><br />";
$cuerpo .= "E-mail: <strong>" . $correo . "</strong><br />";
$cuerpo .= "Empresa: <strong" . $_POST['Empresa'] . "</strong><br />";
$cuerpo .= "Asunto: <strong" . $_POST['Asunto'] . "</strong><br />";
$cuerpo .= "Mensaje: <strong>" . $_POST['Mensaje'] . "</strong>";
// para el envio en formato HTML
$cabeceras = 'MIME-Version: 1.0' . "\r\n";
$cabeceras .= 'Content-type: text/html; charset=utf-8' . "\r\n";
/* direccion del remitente que la cogemos del formulario, en su programa de correo, en la línea De o From, le saldrá la dirección que se ha
puesto en el formulario */
$cabeceras .= "From: " . $correo . "\r\n";
/* direccion de respuesta, la cogemos del formulario, si le damos desde nuestro programa de correo, a Responder o Reply, directamente responderá
a la dirección que se ha puesto en el formulario */
$cabeceras .= "Reply-To: " . $correo . "\r\n";
// ruta del mensaje desde origen a destino
$cabeceras .= "Return-path: " . $correo . "\r\n";
// mando el correo... con la función mail()
if (mail("micorreo","Formulario de contacto",$cuerpo,$cabeceras)) {
// lo pongo dentro de un if para saber si hay problemas durante el envio
// Redirijo a la pagina de formulario recibido correctamente
header("location:enviado.html");
} else {
// Redirijo a la pagina de formulario enviado erroneamente
header("location:error.html");
} // cierro el 'else' del 'if' la funcion 'mail()'
?>