mail() envía automáticamente por
correo el mensaje especificado en mensaje
al recipiente especificado en para. Es
posible especificar múltiples recipientes colocando una
coma entre cada dirección en la cadena
para. Es posible enviar correo
electrónico con archivos adjuntos y tipos especiales
usando esta función. Esto se consigue mediante el uso de
codificación MIME - para más información,
vea este artículo de
Zend o las Clases Mime PEAR.
mail() devuelve TRUE si el correo fue
aceptado satisfactoriamente para su envío, o FALSE de lo
contrario.
Aviso
La implementación de Windows de mail()
difiere en varias formas de la implementación en
Unix. Primero, no usa un binario local para componer mensajes,
en su lugar opera directamente sobre sockets, lo que quiere
decir que se requiere de un MTA que escuche
sobre un socket de red (el cual puede estar en el host local o
en una máquina remota). Segundo, las cabeceras
personalizadas como From:,
Cc:, Bcc: y
Date:no
son interpretadas por el MTA en primera
instancia, son interpretadas por
PHP. PHP < 4.3
sólo soportaba el elemento de cabecera
Cc: (y era sensible a mayúsculas y
minúsculas). PHP >= 4.3 soporta
todos los elementos de cabecera mencionados y ya no es sensible
a mayúsculas y minúsculas.
Si un cuarto argumento tipo cadena es entregado, éste es
insertado al final de la cabecera. Esto se usa típicamente
con el propósito de agregar cabeceras adicionales. Las
cabeceras extra son separadas entre sí con un retorno de
carro y un salto de línea.
Nota:
Debe usar \r\n para separar las cabeceras,
aun cuando puede que los agentes de transferencia de correo en
Unix trabajen con solo una nueva línea
(\n).
Ejemplo 2. Envío de correo con cabeceras adicionales
El valor parametros_adicionales puede ser
usado para pasar un parámetro extra al programa
configurado para ser usado cuando se envíe correo mediante
la opción de configuración
sendmail_path. Por ejemplo, éste
parámetro puede usarse para definir la dirección de
sobre del origen cuando se usa sendmail con la opción
-f. Puede que también necesite agregar
el usuario bajo el que corre su servidor web a la
configuración de sendmail para evitar que se agregue una
cabecera 'X-Warning' al mensaje cuando define el sobre del origen
mediante este método.
Ejemplo 3. Envío de correo con cabeceras adicionales y
definiendo un parámetro extra de línea de
comandos
<?php mail("nadie@example.com", "el asunto", $mensaje, "From: webmaster@{$_SERVER['SERVER_NAME']}", "-fwebmaster@{$_SERVER['SERVER_NAME']}"); ?>
Nota:
Este quinto parámetro fue agregado en PHP 4.0.5. A partir
de PHP 4.2.3 este parámetro se encuentra deshabilitado en
safe_mode y la
función mail() producirá un
mensaje de advertencia y devolverá FALSE si trata de
usarlo.
También puede usar técnicas simples de
construcción de cadenas para generar mensajes complejos de
correo electrónico.
Ejemplo 4. Envío de correo electrónico
complejo
<?php /* recipientes */ $para = "maria@example.com" . ", " ; // fijese en la comma $para .= "kelly@example.com";
/* asunto */ $asunto = "Recordatorio de Cumpleaños para Agosto";
/* mensaje */ $mensaje = ' <html> <head> <title>Recordatorio de Cumpleaños para Agosto</title> </head> <body> <p>¡Aquí están los cumpleaños que llegan en Agosto!</p> <table> <tr> <th>Persona</th><th>Día</th><th>Mes</th><th>Año</th> </tr> <tr> <td>Juan</td><td>3</td><td>August</td><td>1970</td> </tr> <tr> <td>Sandra</td><td>17</td><td>August</td><td>1973</td> </tr> </table> </body> </html> ';
/* Para enviar correo HTML, puede definir la cabecera Content-type. */ $cabeceras = "MIME-Version: 1.0\r\n"; $cabeceras .= "Content-type: text/html; charset=iso-8859-1\r\n";
/* y ahora, enviarlo */ mail($para, $asunto, $mensaje, $cabeceras); ?>
Nota:
Asegúrese de que no tiene caracteres de salto de
línea en los parámetros
para o asunto, o
puede que el correo no sea enviado correctamente.
Nota:
El parámetro para no
debería ser una dirección en la forma de
"Algo <alguien@example.com>". Es posible que el
comando de correo no interprete esto correctamente mientras
habla cen el MTA (particularmente bajo windows).