El procedimiento es sencillo, y una vez que se tiene un formulario convenientemente diseñado, con los campos bien nombrados con el atributo name
, basta pasarle a la orden mail
de PHP lo que un usuario introduce en el formulario. Un ejemplo de formulario podría ser el siguiente:
< input name = 'nombre' value = 'nombre' onblur = 'if(this.value == "") {this.value ="nombre";}' onfocus = 'if(this.value == "nombre") {this.value = "";}' /> < input name = 'email' value = 'email' onblur = 'if(this.value == "") {this.value ="email";}' onfocus = 'if(this.value == "email") {this.value = "";}' /> < input name = 'asunto' value = 'Asunto' onblur = 'if(this.value == "") {this.value ="Asunto";}' onfocus = 'if(this.value == "Asunto") {this.value = "";}' /> < textarea rows = '5' cols = '45' name = 'mensaje' onblur = 'if(this.value == "") {this.value ="Mensaje";}' onfocus = 'if(this.value == "Mensaje") {this.value = "";}' >Mensaje</ textarea > < input type = 'submit' name = 'enviar' value = 'Enviar' /> </ form > |
A menos que utilicemos AJAX necesitaremos dos páginas, una que contendrá el formulario y otra que recibirá los datos introducidos en él, los enviará a la orden mail y devolverá en pantalla el mensaje adecuado de que el correo ha sido enviado. Para acceder de la primera a la segunda asignaremos como valor la URL de la segunda página al atributo action
del formulario. A recordar:
En la segunda página recogeremos la información enviada por la primera, y enviaremos el correo con la orden mail de PHP.
Para lo primero utilizaremos el sistema de envío de datos entre páginas de PHP, POST
. Supongamos que tenemos que recoger los valores de los campos nombre
, mail
, asunto
y mensaje
, que hemos nombrado convenientemente mediante el atributo name
en la página del formulario.
$nombre = $_POST [ 'nombre' ]; $mail = $_POST [ 'email' ]; $asunto = $_POST [ 'asunto' ]; $mensaje = $_POST [ 'mensaje' ]; |
Igualmente creamos las variables que contendrán la dirección del destinatario, las cabeceras del correo e información adicional en el cuerpo del mensaje:
$header = 'From: ' . $mail . " \r\n" ; $header .= "X-Mailer: PHP/" . phpversion() . " \r\n" ; $header .= "Mime-Version: 1.0 \r\n" ; $header .= "Content-Type: text/plain" ; $mensaje = "Este mensaje fue enviado por " . $nombre . " \r\n" ; $mensaje .= "Su e-mail es: " . $mail . " \r\n" ; $mensaje .= "Mensaje: " . $_POST [ 'mensaje' ] . " \r\n" ; $mensaje .= "Enviado el " . date ( 'd/m/Y' , time()); $destino = 'info@tusitio.com' ; |
Por último pasaremos a la orden mail toda la información que necesita para enviar el mensaje:
mail( $destino , $asunto , utf8_decode( $mensaje ), $header ); |
Para más información puedes consultar un tutorial más extenso en tallerwebmaster.
5 comentarios
muy interesante
no se sabe que es eso
¿Qué es lo que no entiendes, alex?
Hola mi consulta es que los comentarios en mi formulario no llegan a mi mail. Me podrias ayudar. te dejo PHP
Hola Pablo, no es posible incluir código PHP en los comentarios. Puedes usar algún servicio para compartir tu código, como codepad.