ante todo presentarme, soy nuevo en este foro, espero tener una estancia concurrida :)
bien, mi problema es el siguiente:
quiero hacer un formulario sencillo, para que se puedan mandar correos sin pasar por Outlook; he hecho el archivo.php para ello, pero cuando pulso el botón de enviar, tan solo se abre en la web el archivo.php en forma de texto, mostrando el código
el formulario en HTML es el siguiente:
Código HTML:
<form action="contacto.php" method="POST" name="contacto" enctype="text/plain"> <input type="text" size="30" name="nom" placeholder="Nombre"></br></br> <input type="text" size="30" name="email" placeholder="Correo electrónico"></br></br> <input type="text" size="30" name="asunto" placeholder="Asunto"></br></br> <textarea name="mensaje" cols="45" rows="10" placeholder="Escribe aquí tu mensaje"></textarea></br></br> <input type="submit" value="Enviar"><input type="reset" value="Limpiar"> </form>
Código PHP:
<?php
echo "
";
// Primero revisamos que las variables que vienen de los formularios no se encuentren vacías
if (empty($_POST['nom']))
echo "No se especifico nombre
";
if (empty($_POST['email'))
echo "No se especifico E - mail
";
if (empty($_POST['asunto']))
echo "No se especifico asunto
";
if (empty($_POST['mensaje']))
echo "Por favor, no envie un mensaje en blanco
";
// Luego validamos con strchr la primera ocurrencia de la arroba y el punto, es decir, validamos
// que sea un email lo que se escribe en el campo correspondiente
if ((!strchr($_POST['email'],"@")) || (!strchr($_POST['email'],".")))
{
echo "No es un correo válido
";
// Esta bandera se activa en false si no es un email válido
$valida = false;
}
// Si todo sale bien
if ((empty($_POST['nom'])) && (empty($_POST['email'])) && (empty($_POST['asunto'])) && (empty($_POST['mensaje'])) && (valida!= false))
{
// Creamos el header para el mensaje
// Sección Para:
$to = $_POST['[email protected]'];
// Asunto
$subject = $_POST['asunto'];
// El content-Type y demás información para el mailer
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
// El De: en la forma Nombre [email protected], esto garantiza que
// en el cliente de correo del receptor se vea sólo el nombre de quien envia
// en su bandeja de entrada
$headers .= "From: $_POST[nombre] <$_POST[email]> \r\n";
// Opcional: Resopnder a:
$headers .= "Reply-To: " . $_POST['email'];
// El mensaje
$message = $_POST['mensaje'];
// Abrimos un pipe Unix para ejecutar sendmail en el servidor, el "w" es porque se abre para escritura
$fd = popen("/usr/sbin/sendmail -t", 'w');
// Metes las cabeceras del mensaje en el pipe
fputs($fd, "To: $to\n");
fputs($fd, "Subject: $subject\n");
fputs($fd, "X-Mailer: PHP4\n");
if ($headers) {
fputs($fd, "$headers\n");
}
// Dejas un espacio en blanco
fputs($fd, "\n");
// Metes el mensaje en el pipe
fputs($fd, $message);
//Cierras el pipe y con ello se envia el mensaje
pclose($fd);
echo "Mensaje enviado, Gracias por sus sugerencias.
";
}
echo 'Regresar</p>';
?>
muchas gracias de antemano,
un saludo