La función mail() de php

2 de febrero de 2004

Yo uso la función mail() de PHP para enviar la información de formularios desde una página de internet a una dirección de correo electrónico . Con esta funcion pueden olvidarse del odioso, obsoleto y poco útil procedimiento del "mailto:albegago@hotmail.com"

Con la función mail() se pueden enviar mensajes con texto simple, sin formato, y también se pueden enviar mensajes con formato HTML, esto es se le puede dar color a las letras, poner en negritas las letras, insertar imagenes, dibujar tablas, etc.

Espero que no sea necesario decir que está función trabaja con servidores que corran PHP... Esta función no sirve si el servidor corre ASP, CFM, etc.

Puede que tu servidor corra PHP, pero algunos proveedores de hospedaje restringen los scripts que puedes utilizar.

La función mail es:

mail($destino, $asunto, $mensaje, $encabezados);

donde

$destino: es la dirección a donde se enviará el mensaje

$asunto: es el asunto del mensaje

$mensaje: es el mensaje en sí

$encabezados: aquí se anexa por ejemplo quien envía el mensaje, si el mensaje va ir con copia para, si el mensaje va ir con copia oculta para, si tendrá formato html, etc.

un ejemplo sencillo sería:

<? //indicamos el inicio de nuestro codigo php
mail("albegago@hotmail.com", "Prueba de correo", "esto es una prueba");
?> // aqui termina nuestro codigo

Lo que hace está línea de código es enviar un mensaje a albegago@hotmail.com, con el asunto: Prueba de correo; y el mensaje: esto es una prueba.

Notese que si estamos usando como valor un STRING, este debe de ir entre comillas.

Hagmos ahora algo más elaborado. Supongamos que tenemos un formulario donde la gente escribe su e-mail, para poder responderle, y unos comentarios. Algo como:

 

Tu e-mail:
Tus comentarios:

 

Lo primero que hay que hacer es prepar el formulario.

Hay que agregar el procedimiento por el cual se procesará su información, esto se hace modificando el tag FORM.

El tag FORM de este ejemplo dice:

<FORM METHOD="post" ACTION="nova_enviar.php">

El valor de ACTION es el archivo php que contiene la funcion mail. En esta caso nova_enviar.php es mi archivo php que contiene las instrucciones para enviar por mail mi formulario.

Adicionalmente debemos asignarle un valor al NAME de cada campo de nuestro formulario, para poder distinguirlos.

Así, para crear el campo de "Tu e-mail" utilice la siguiente instruccion:

<input name="email" type="text">

Para crear el campo "tus comentarios", use la siguiente instruccion:

<textarea name="comentarios" cols="30" rows="6"> </textarea>

Mi archivo php, nova_enviar.php, sería así:

<?
$remitente = $_REQUEST["email"];
$mensaje = $_REQUEST["comentarios"];

mail("albegago@hotmail.com", "Comentarios desde mi pagina", $mensaje, "From: $remitente");
?>

¿Qué es lo que estamos haciendo?

La primera línea:

$remitente = $_REQUEST["email"];

 

La segunda línea:

$mensaje = $_REQUEST["comentarios"];

 

La tercera línea:

mail("albegago@hotmail.com", "Comentarios desde mi pagina", $mensaje, "From: $remitente");

mail()
hace el llamado de la función

"albegago@hotmail.com",
envia un mensaje a albegago@hotmail.com

"Comentarios desde mi pagina",
asigna el asunto: Comentarios desde mi página;

$mensaje,
Recupera el valor de la variable $mensaje para usarlo como el cuerpo de nuestro mensaje

"From: $remitente"
Añade un encabezado a nuestro mensaje, en este caso define quien envía el mensaje.

Con este codigo se enviaría nuestro formulario, pero la persona que lo envía solo vería al final del proceso una página en blanco... ¿se envío el mensaje, se produjo un error, qué pasó? serían sus dudas lógicas.

 

Para añadir un mensaje de confirmación, usaríamos el siguiente código:

<?
$remitente = $_REQUEST["email"];
$mensaje = $_REQUEST["comentarios"];

mail("albegago@hotmail.com", "Comentarios desde mi pagina", $mensaje, "From: $remitente") or die ("Su mensaje no se envio.");

echo "<p>Hemos recibido la siguiente informaci&oacute;n:<p>";
echo $mensaje;
echo "<p><br><p>Muy pronto nos pondremos en contacto con usted.<p>";
?>

El código sigue siendo prácticamente el mismo. ¿que cambió?

En la línea 3 se agregó:

or die ("Su mensaje no se envio.");

si el correo no puede enviarse, aparece el mensaje de error "Su mensaje no se envio" or die es una funcion predefinida de php.

Si el mensaje envía, entonces ordenamos con la función predefinida echo un mensaje de confirmación que incluya frases predefinidas ("Hemos recibido la siguiente información" y "Muy pronto nos pondremos en contacto con usted") y el mensaje que redactó el visitante: $mensaje

Los encabezados más comunes que pueden utilizarse son:

From:
define la dirección de e-mail del remitente

Reply-To:
define a quien debe responderse el mensaje

BCC:
define una dirección de e-mail para enviar una copia oculta del mensaje

"Content-Type: text/html; charset=iso-8859-1"
nos permite utilizar codigo html en nuestro mensaje

Un ejemplo que hace uso de esto encabezados sería:

 

<?
$remitente = $_REQUEST["email"];
$destino= "albegago@hotmail.com";
$asunto= "Este es un mensaje de felicitacion";
$mensaje= "América y ya<p>Nos vamos a la Libertadores<p><b>América para los americanistas</b>";
$encabezados = "From: $remitente\nReply-To: $remitente\nContent-Type: text/html; charset=iso-8859-1";

mail($destino, $asunto, $mensaje, $encabezados) or die ("Su mensaje no se envio.");
?>

Con ayuda de mail() podemos hacer formularios con n numero de campos. La clave está en asignar un NAME unico a cada campo y solicitar su valor desde nuestro codigo php con $_REQUEST.


Sitios de interés:

Sitio de oficial de PHP
Puedes descargar php para varios sistemas operativos, consultar el manual, postear, etc. El sitio está en español.

Zend Tchnologies
Aquí encontrarás tutoriales, scripts, artículos. El sito está en inglés.

Devshed
Aquí encontrarás tutoriales y artículos . El sito está en inglés.

W3 Schools
Aquí encontrarás tutoriales para principiantes de php, html, css, javascript.... El sitio está en inglés.


Comenta y opina este texto     Lee mi libro de visitas
© 1997-2014 Alain García Gómez
albegago@hotmail.com
El vínculo a este documento es:
http://www.alaingarcia.net/weird/mail_php.htm

Suscribase a nuestro RSS

Puedes apoyar a este sitio regalándome una c3rvez4