CodeIgniter User Guide Version 1.6.1


Clase Email

La robusta clase Email de CodeIgniter soporta las siguientes características:

Enviando Correo Electrónico

Enviar un correo electrónico no es simple, pero puedes configurarlo 'al vuelo' o establecer tus preferencias en un archivo de configuración.

Aquí está un ejemplo básico demostrando como debes enviar un email. Nota: Este ejemplo asume que estas enviando un email desde uno de tus controladores.

$this->load->library('email');

$this->email->from('tu_direccion@tu_sitio.com', 'Tu nombre');
$this->email->to('alguien@ejemplo.com');
$this->email->cc('otro@otro-ejemplo.com');
$this->email->bcc('ellos@su-ejemplo.com');

$this->email->subject('Correo de Prueba');
$this->email->message('Probando la clase email');

$this->email->send();

echo $this->email->print_debugger();

Estableciendo Preferencias de Correo Electrónico

Hay 17 diferentes preferencias disponibles para adaptar la forma en la que se envían sus correos electrónicos. Puedes establecer cualquiera de ellos manualmente como se describe aquí, o automáticamente por las preferencias establecidas en tu archivo de configuración, descrita mas abajo:

Las preferencias son establecidas por el paso de valores de un arreglo de preferencias a la funcion initialize(inicialización) de email. Aqui tenemos un ejemplo de como debes establecer algunas preferencias:

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);

Nota: La mayoría de las preferencias tienen un valor por defecto que será usado si no los estableces

Estableciendo preferencias de Email (Correo Electrónico) en un archivo de configuración

Si prefieres no establecer preferencias usando el método anterior, puedes ubicarlos en un archivo de configuración. Simplemente debes crear un nuevo archivo llamado email.php, agrega el arreglo $config en ese archivo. Luego guárdalo en config/email.php y el sera usado automáticamente. Tu NO necesitas usar la función $this->email->initialize() si guardas las preferencias en un archivo de configuración.

Email Preferences

Lo que sigue es una lista de todas las preferencias que pueden ser establecidas cuando se envia un e-mail.

Preferencia Valor por defecto Opciones Descripción
useragentCodeIgniterNoneEl "user agent".
protocolmailmail, sendmail, or smtpEl protocolo en envio de email.
mailpath/usr/sbin/sendmailNoneLa ruta al Sendmail.
smtp_hostNo DefaultNoneDirección del servidor SMTP.
smtp_userNo DefaultNoneUsuario SMTP.
smtp_passNo DefaultNoneClave SMTP.
smtp_port25NonePuerto SMTP.
smtp_timeout5NoneSMTP Timeout (en segundos).
wordwrapTRUETRUE or FALSE (boolean)Activar ajuste de linea.
wrapchars76 Cantidad de caracteres para ajustar.
mailtypetexttext or htmlTipo de correo. Si envias un correo HTML debes enviarla como una pagina web completa. Asegurese de que no tiene links relativos o rutas de imagenes relativas, de otra forma no funcionaran.
charsetutf-8Juego de Caracteres(utf-8, iso-8859-1, etc.).
validateFALSETRUE or FALSE (boolean)Si se validara la direccion del correo.
priority31, 2, 3, 4, 5Prioridad del email. 1 = Alta. 5 = Baja. 3 = Normal.
newline\n"\r\n" or "\n"Caracter de nueva linea. (Usa "\r\n" para cumplir con la RFC 822).
bcc_batch_modeFALSETRUE or FALSE (boolean)Activa el Modo Batch BCC.
bcc_batch_size200NoneNumero de emails en cada BCC batch.

Referencia de la función email

$this->email->from()

Establece la dirección de email y el nombre de la persona que envía el email:

$this->email->from('tu@tu-sitio.com', 'Tu Nombre');

$this->email->reply_to()

Establece la direccion de respuesta. Si la información no es proveida, se usara de la funcion "from". Ejemplo:

$this->email->reply_to('tu@tu-sitio.com', 'Tu Nombre');

$this->email->to()

Establece la(s) direccion(es) de email del destinatario(s). Puede ser una direccion simple, una lista separada por comas o un arreglo:

$this->email->to('alguien@ejemplo.com'); $this->email->to('uno@ejemplo.com, dos@ejemplo.com, tres@ejemplo.com'); $list = array('uno@ejemplo.com', 'dos@ejemplo.com', 'tres@ejemplo.com');

$this->email->to($list);

$this->email->cc()

Estable las direcciones CC (con copia). Igual al "to", puede ser una dirección simple, o una lista separada por comas, o un arreglo.

$this->email->bcc()

Establece las direcciones BCC (con copia oculta). Es igual a la forma "to", puede ser una direccion simple, una lista delimitada por comas, o un array.

$this->email->subject()

Establece el asunto del email:

$this->email->subject('Este es el asunto');

$this->email->message()

Establece el cuerpo del mensaje:

$this->email->message('Este es mi mensaje');

$this->email->set_alt_message()

Establece un cuerpo de mensaje alternativo:

$this->email->set_alt_message('Este es el mensaje alternativo');

Este es una cadena de mensaje opcional que puede ser usado si envias un email con formato HTML. El te permite especificar un mensaje alternativo sin formato HTML el cual es adherido a la cadena de la cabecera. Para la gente que no acepta email con formato HTML. Si no estableces un mensaje alternativo, CodeIgniter extraera el mensaje de tu email HTML y quitara las etiquetas.

$this->email->clear()

Inicializa todas las variables de email a un estado vacio. Esta función esta hecha para ser usada en caso de que se use la funcion enviar email en un ciclo repetitivo (loop), permitiendo que los datos sean restablecidos entre los ciclos.

foreach ($lista as $nombre => $direccion)
{
    $this->email->clear();

    $this->email->to($direccion);
    $this->email->from('tu@tu-sitio.com');
    $this->email->subject('Aqui tu informacion '.$nombre);
    $this->email->message('Hola '.$nombre.' Aqui esta la informacion que solicitaste.');
    $this->email->send();
}

Si estableces el parametro a TRUE cualquier adjunto sera limpiado también:

$this->email->clear(TRUE);

$this->email->send()

La función de envío de emails. Retorna el booleano TRUE o FALSE basado en el exito o el fracaso, permitiendo su uso condicionalmente:

if ( ! $this->email->send())
{
    // Generar error
}

$this->email->attach()

Te permite enviar un adjunto. Coloque el path/nombre en el primer parametro. Nota: Use un path al archivo, no una URL. Para multiples adjuntos use la función varias veces. Por ejemplo:

$this->email->attach('/path/a/photo1.jpg');
$this->email->attach('/path/a/photo2.jpg');
$this->email->attach('/path/a/photo3.jpg');

$this->email->send();

$this->email->print_debugger()

Retorna una cadena conteniendo cualquier mensaje del servidor, la cabecera del email, y el mensaje. Muy util para debugging.

Sobre-escribiendo el ajuste de palabras

Si tienes el ajuste de palabras (word wrapping) activado (recomendado para cumplir con la RFC 822) y tienes un enlace muy largo en tu email, este puede ser ajustado tambien, causando que se vuelva in-clickeable por la persona que lo reciba. CodeIgniter te permite manualmente sobre-escribir el (word wrapping) ajuste de palabra en una parte de tu mensaje como este:

El texto de tu email que
sera ajustado normalmente.

{unwrap}http://www.ejemplo.com/un_largo_enlace_que_deberia_no_ser_ajustado.html{/unwrap}

Mas texto que luego deberia
ser ajustado normalmente.

Ubique el item que quieres que no sea ajustado entre :{unwrap} {/unwrap}