"En la vida solo hay dos tipos de personas, las que dan pretextos y las que dan resultados, ¿y tu cual tipo de persona eres? "

Soy una persona apasionada por todo lo que tiene que ver con Internet y las nuevas tecnologías. Soy autodidacta, y me encanta impartir clases...


Formulario de Contactos con PHP

Viernes 05 de Marzo de 2010

PHP y MySQL
Autor: César Cancino
Categoría: PHP y MySQL
Etiquetas Programación, php, mysl
Comentarios 12

Yo soy de los que siempre reviso los foros de internet, y una de las preguntas con las que mas me encuentro tiene que ver con cómo construir un formulario HTML y enviarlo por mail usando PHP. Pues bien, acá les muestro una manera sencilla de hacerlo. No quice poner validaciones Javascript ni nada similar para no inducir a errores a personas nóveles en programación web, solo me limité a diseñar el formulario y procesar sus datos con PHP. A continuación les muestro el código, espero les sirva. Primero generamos el formulario:

¿Qué te gustaría compartir con nosotros?

Compartir

Yo soy de los que siempre reviso los foros de internet, y una de las preguntas con las que mas me encuentro tiene que ver con cómo construir un formulario HTML y enviarlo por mail usando PHP. Pues bien, acá les muestro una manera sencilla de hacerlo. No quice poner validaciones Javascript ni nada similar para no inducir a errores a personas nóveles en programación web, solo me limité a diseñar el formulario y procesar sus datos con PHP. A continuación les muestro el código, espero les sirva. Primero generamos el formulario:
<form name="form" method="post" action="procesa.php">
Nombre:<input type="text" name="nom">
<br>
Teléfono:<input type="text" name="tel">
<br>
E-Mail:<input type="text" name="correo">
<br>
Mensaje:<textarea name="mensaje" rows="30" cols="10"></textarea>
<hr>
<input type="submit" value="Enviar" title="Enviar">
</form>

Ahora generamos el código PHP que nos permitirá recuperar los datos del formulario y los enviaremos por mail a nuestro correo:

<?php
/*
Desarrollado por www.cesarcancino.com
*/

//Recupero los datoss enviados desde el formulario.
$nom=$_POST["nom"];
$tel=$_POST["tel"];
$correo=$_POST["correo"];
$mensaje=$_POST["mensaje"];
//**************************************************************
//envío el correo
$mi_mail="tucorreo@correo.com";
$remitente="Remitente<tucorreo@hotmail.com>";

$asunto="Asunto del correo"; //Asunto
$cuerpo="
<html>
<body>
<table>
<tr bgcolor='#f0f0f0'><td>
<font size='1' face='Verdana'>
Nombre:&nbsp;".$nom."<br>

Tel&eacute;fono:&nbsp;".$tel."<br>Correo:

&nbsp;".$correo."<br>Mensaje:&nbsp;".$mensaje."
</font>
</td>
</tr>
</table>
</body>
</html>

"; //mensaje

$sheader="From:".$remitente."\nReply-To:".$remitente."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";

mail($mi_mail,$asunto,$cuerpo,$sheader);
//**********************************************
/*de manera opcional ( pero recomendable )

podemos redireccionar al usuario

al alguna página de nuestro sitio,

en este caso lo redireccionaremos al mismo formulario
*/
echo "<script type='text/javascript'>

alert('Su mensaje ha sido enviado exitosamente')

</script>";
echo"<script type='text/javascript'>

window.location='index.php

'</script>";
?>



12 Comentarios

  1. Alexander Chozo
    Miércoles 20 de Noviembre de 2013

    Hola César, una consulta básica, el código de este ejemplo se debe copiar en 2 archivos diferentes? el formulario debe ser html y procesa php? Ambos deben estar al mismo nivel desde la raiz del directorio? Disculpa lo básico de las preguntas, es que estoy empezando con PHP y HTML. Gracias

  2. Esteban
    Lunes 03 de Septiembre de 2012

    quetal Cesar. Sabes que cuando creo un formulario de registro y encripto la contraseña ya no puede acceder porq no se como encriptar la contraseña del inicio de session. No se si me explico

  3. Miguel
    Lunes 09 de Julio de 2012

    Copio y pego el codigo mas no me sirve, simplemente no envia César.. estoy usando el appserver..

  4. Roger
    Domingo 17 de Junio de 2012

    Hola césar, una pregunta: en la linea $sheader="From:".$remitente." Reply-To:".$remitente." "; por qué es así y no: $sheader="From:".$correo." Reply-To:".$remitente." "; ? agradecería que me lo explicaras si tienes tiempo, muchas gracias de antemano y felicidades por tu gran trabajo!

  5. Medardo Aparcana
    Lunes 23 de Abril de 2012

    Mi consulta es como hacer que en un formulario se pueda enviar un archivo adjunto.

  6. manuel
    Viernes 06 de Abril de 2012

    hola! mundo

  7. Alejandro
    Martes 17 de Enero de 2012

    Hola intente hacerlo con minirelay server y si intenta como enviar pero pareciera como que hotmail no autoriza enviar correos sin ser desde la web de ellos, la pregunta es como se configura un correo para que permita usar este servicio Gracias

  8. HENRY ALVAREZ ASTUDILLO
    Martes 15 de Marzo de 2011

    hola lo que pasa es que yo estuve probando este codigo, en un hosting gratis y no me funciona... me podrian ayudar o guiar???

  9. Benjamín
    Lunes 24 de Enero de 2011

    Hola, para complementar lo que dice Cesar del problema del servidor de correo, si instalas en modo local algún programa de relay de correo como el "mini relay server" , te servirá para hacer pruebas en modo local.....ya que dicho programa se encargará de despachar el correo... saludos

  10. César Cancino
    Lunes 24 de Enero de 2011

    Hola Adel ese error es porque estás probándolo en local, y la función mail solo funciona en hosting que tengan habilitados servidores de correos...el 99% de los hosting cuentan con esa funcionalidad.... Por cierto traté de responderte al mail pero la dirección que insertaste no existe ;)

  11. adel
    Lunes 24 de Enero de 2011

    ME DA ESTA ERROR Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:xampphtdocsejemplosform-mail.php on line 42

  12. Omar
    S?bado 04 de Septiembre de 2010

    Queda muy bueno personalizar la respuesta más o menos así: alert('$remitente, su mensaje ha sido enviado exitosamente')