mail

mail

(PHP 3, 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.

Atenci贸n

脡ste no debe contener caracteres de salto de l铆nea, o es posiblo 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.

Atenci贸n

(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).

Nota: 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.

Nota: 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贸nDescripci贸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

Ejemplo 1. Env铆o de correo.

Uso de mail() para enviar un correo simple:

<?php
// El mensaje
$mensaje = "Linea 1\nLinea 2\nLinea 3";

// En caso de que cualquier linea tenga mas de 70 caracteres, habria
// que usar wordwrap()
$mensaje = wordwrap($mensaje, 70);

// Enviar
mail('cafeinado@example.com', 'Mi Asunto', $mensaje);
?>

Ejemplo 2. Env铆o de correo con cabeceras extra.

La adicici贸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);
?>

Ejemplo 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');
?>

Ejemplo 4. Env铆o de correo electr贸nico HTML

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

<?php
// multiples recipientes
$para  = 'aidan@example.com' . ', '; // note la coma
$para .= 'wez@example.com';

// asunto
$asunto = 'Recordatorios de Cumplea&ntilde;os para Agosto';

// mensaje
$mensaje = '
<html>
<head>
  <title>Recordatorios de Cumplea&ntilde;os para Agosto</title>
</head>
<body>
  <p>&iexcl;Aqu&iacute; est&aacute;n los cumplea&ntilde;os que vienen
  en Agosto!</p>
  <table>
    <tr>
      <th>Persona</th><th>D&iacute;a</th><th>Mes</th><th>A&ntilde;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: Maria <maria@example.com>, Kelly <kelly@example.com>' . "\r\n";
$cabeceras .= 'From: Recordatorio de Cumplea&ntilde;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, $cabaceras);
?>

Nota: Si desea enviar HTML u otros correos complejos, es recomendable usar el paquete PEAR PEAR::Mail.

Notes

Nota: 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.

Nota: 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.

Nota: 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.

Nota: 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()
PEAR::Mail
PEAR::Mail_Mime