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:
<form action='http://url.pagina.envio' method='post' name='contactForm'> <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:
action='http://url.pagina.envio' name='nombre' name='email' name='asunto' name='mensaje'
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.