ezmlm_hash
Mailparse
Mail Functions
PHP Manual

# mail

(PHP 4, PHP 5)

mail — Enviar correo

### Descripción

bool mail ( string `$para` , string `$asunto` , string `$mensaje` [, string `$cabeceras_adicionales` [, string `$parametros_adicionales` ]] )

Envía un correo electrónico.

### Lista de parámetros

`para`

  Recipiente, o recipientes del correo.

  El formato de esta cadena debe ser compatible con el documento » RFC 2822. Algunos ejemplos son:

  - usuario@example.com
  - usuario@example.com, otrousuario@example.com
  - Usuario <usuario@example.com>
  - Usuario <usuario@example.com>, Otro Usuario <otrousuario@example.com>

`asunto`

  Asunto del correo electrónico a ser enviado.

  Caution

  Éste no debe contener caracteres de salto de línea, o es posible que el correo no sea enviado apropiadamente.

`mensaje`

  Mensaje a ser enviado.

  Cada línea debe ser sepadarada con un caracter LF (\n). Las líneas no deberían exceder los 70 caracteres.

  Caution

  (Sólo en Windows) Cuando PHP sostiene comunicación con el servidor SMTP directamente, si un punto es encontrado al comienzo de la línea, éste es removido. Para contrarestar este comportamiento, reemplace estas ocurrencias con dos puntos.

  `<?php
  $texto = str_replace("\n.", "\n..", $texto);
  ?>`

`cabeceras_adicionales` (opcional)

  Cadena a ser insertada al final de la cabecera de correo electrónico.

  Por lo general, este parámetro es usado para agregar cabeceras extra (From, Cc y Bcc). Múltiples cabeceras extra deben ser separadan con una secuencia CRLF (\r\n).

  > Note: Cuando envíe correo, el mensaje debe contener una cabecera From. Ésta puede definirse con el parámetro `cabeceras_adicionales` , o puede definirse un valor predeterminado en php.ini.
  > No hacer esto resultará en un mensaje de error similar a Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. La cabecera From define también Return-Path bajo Windows.

  > Note: Si los mensajes no son recibidos, intente usar un caracter LF (\n) solamente. Algunos agentes de transferencia de correo de pobre calidad en Unix reemplazan LF por CRLF automáticamente (lo cual conlleva a caracteres CR dobles si se usa CRLF). Esto debe ser usado como último recurso, ya que no es compatible con la especificación en » RFC 2822.

`parametros_adicionales` (opcional)

  El parámetro `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, este parámetro puede usarse para definir la dirección de sobre del origen cuando se usa sendmail con la opción -f.

  El usuario bajo el que corre su servidor web debe ser agregado como un usuario confiable en la configuración de sendmail para prevenir que se agregue una cabecera 'X-Warning' a los mensajes cuando el origen de sobre (-f) sea definido usando este método. Para usuarios de sendmail, este archivo es /etc/mail/trusted-users.

### Valores retornados

Devuelve `TRUE` si el correo fue aceptado satisfactoriamente para su envío, o `FALSE` de lo contrario.

Es importante notar que solo porque el correo sea aceptado para su envio NO quiere decir que el correo realmente vaya a llegar a su destino planeado.

### Registro de cambios

Versión | Descripción
--- | ---
4.3.0 (Sólo en Windows) | Todas las cabeceras personalizadas (como From, Cc, Bcc y Date) son soportadas, y no son sensibles a mayúsculas y minúsculas). (Dado que las cabeceras personalizadas no son interpretadas por el MTA en primer lugar, sino interpretadas por PHP, PHP < 4.3 sólo soportaba el elemento de cabecera Cc y era sensible a mayúsculas y minúsculas).
4.2.3 | El parámetro `parametros_adicionales` es deshabilitado en modo seguro y la función mail() producirá un mensaje de advertencia y devolverá `FALSE` cuando sea usado.
4.0.5 | El parámetro `parametros_adicionales` fue agregado.

### Ejemplos

Example #1 Envío de correo.

Uso de mail() para enviar un correo simple:

`<?php
// El mensaje
$mensaje = "Línea 1\nLínea 2\nLínea 3";
// En caso de que cualquier línea tenga más de 70 caracteres, habría
// que usar wordwrap()
$mensaje = wordwrap($mensaje, 70);
// Enviar
mail('cafeinado@example.com', 'Mi Asunto', $mensaje);
?>`

Example #2 Envío de correo con cabeceras extra.

La adición de cabeceras básicas, que le indican al MUA las direcciones From y Reply-To:

`<?php
$para = 'nadie@example.com';
$asunto = 'el asunto';
$mensaje = 'hola';
$cabeceras = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($para, $asunto, $mensaje, $cabeceras);
?>`

Example #3 Envío de correo con un parámetro de línea de comandos adicional.

El parámetro `parametros_adicionales` puede ser usado para pasar un parámetro adicional al programa configurado para usarse cuando se envía correo con sendmail_path.

`<?php
mail('nadie@example.com', 'el asunto', 'el mensaje', null,
'-fwebmaster@example.com');
?>`

Example #4 Envío de correo electrónico HTML

También es posible enviar correo electrónico en formato HTML con mail().

`<?php
// múltiples recipientes
$para = 'aidan@example.com' . ', '; // note la coma
$para .= 'wez@example.com';
// asunto
$asunto = 'Recordatorios de Cumpleaños para Agosto';
// mensaje
$mensaje = '
<html>
<head>
<title>Recordatorios de Cumpleaños para Agosto</title>
</head>
<body>
<p>¡Aquí están los cumpleaños que vienen 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>Agosto</td><td>1970</td>
</tr>
<tr>
<td>Sandra</td><td>17</td><td>Agosto</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
// Para enviar correo HTML, la cabecera Content-type debe definirse
$cabeceras = 'MIME-Version: 1.0' . "\r\n";
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Cabeceras adicionales
$cabeceras .= 'To: María <maria@example.com>, Kelly <kelly@example.com>' . "\r\n";
$cabeceras .= 'From: Recordatorio de Cumpleaños <recordatorio@example.com>' . "\r\n";
$cabeceras .= 'Cc: archivo@example.com' . "\r\n";
$cabeceras .= 'Bcc: chequeo@example.com' . "\r\n";
// Enviarlo
mail($para, $asunto, $mensaje, $cabeceras);
?>`

> Note: Si desea enviar HTML u otros correos complejos, es recomendable usar el paquete PEAR » PEAR::Mail_Mime.

### Notes

> Note: La implementación en 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.
> Por lo anterior, el parámetro `para` no debería ser una dirección en la forma "Algo <alguien@example.com>". Puede que el comando de correo no interprete apropiadamente ésto cuando se comunique con el MTA.

> Note: Es posible enviar correo electrónico con archivos adjuntos y tipos especiales de contenido (p.ej. HTML) 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.

> Note: Cabe anotar que la función mail() no es recomendable para el envío de correo electrónico en volumen por medio de un ciclo. Esta función abre y cierra un socket SMTP para cada correo, por lo que no resulta muy eficiente.
> Para el envío de grandes cantidades de correo electrónico, vea los paquetes » PEAR::Mail y » PEAR::Mail_Queue.

> Note: Los siguientes documentos RFC pueden resultar útiles: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, » RFC 2049, y » RFC 2822.

### Ver también

- imap_mail() - Send an email message
- » PEAR::Mail
- » PEAR::Mail_Mime

ezmlm_hash
Mailparse
Mail Functions
PHP Manual