lunes, 28 de octubre de 2013

Envío de correos sobre CodeIgniter

 

En el artículo anterior “CKEditor + KCFinder sobre CodeIgniter”, te comentaba sobre la integración de una interfaz WYSIWYG sobre Codeigniter. En este artículo te hablaré sobre la utilidad del CKEditor en combinación con la clase email de CodeIgniter para hacer un formulario de envío de correos.

En la ayuda de CodeIgniter puedes encontrar que con la biblioteca email puedes hacer:

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

$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');
$this->email->attach('/path/to/photo1.jpg');
$this->email->attach('/path/to/photo2.jpg');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();

Está muy claro: cargas la biblioteca, defines remitente, destinatarios, adjuntos, título y cuerpo del mensaje, y lo mandas. Es todo lo que necesitas para enviar correos.

Para facilitar las cosas, en nuestro caso hicimos una biblioteca “mail_manager” dentro de application/libraries/mail_manager.php y un fichero de configuración en application/config/mail_config.php.

El fichero de configuración tiene un destinatario FROM por defecto con su nombre, y el tipo de correos (html). Así que en el constructor de mail_manager se carga la biblioteca email de Codeigniter, se carga el fichero de configuración mail_config, y se inicializa la clase email de CodeIgniter con la configuración cargada.

Adicionamos entonces una función send a mail_manager que básicamente recibe los argumentos y hace las llamadas a email indicadas en el grupo de código de arriba.

send($from, $name, $to, $subject, $body, $cc='', $bcc='', $attach_array='')

Con esto ya se pueden mandar correos automáticos, por ejemplo cuando alguien se registra se le envía el correo de “Usted se ha registrado…”.

En otra parte necesitamos que el usuario enviara correos con un formulario. Aquí utilizamos entonces el CKEditor para lograr la siguiente interfaz:

clip_image002

Figura 1 Interfaz de envío de correos

Claro que para esto creamos un controlador “emailer” en cuyo constructor se configura un CKEditor y se envía una instancia del mismo para esta vista (ver artículo CKEditor + KCFinder sobre CodeIgniter).

El botón “Para” de la vista abre una ventana popup donde se pueden seleccionar destinatarios; y el botón “Buscar” permite seleccionar un atachado, que con un poco de jquery modifica la vista cada vez que se selecciona un adjunto, permitiendo eliminarlo nuevamente u obtener una vista previa de él, o seleccionar un nuevo atachado (figura 2).

clip_image003


Figura 2 Detalle de inserción de atachados

Cuando se da “Enviar”, el controlador emailer recibe los inputs y llama a la función “send” de la biblioteca mail_manager.

Con esto quedó terminado nuestro formulario para envío de correos, una mezcla de componentes visuales de html y bibliotecas y utilidades de CodeIgniter para lograr una interfaz agradable y funcional.


¿Te ha gustado este Post? Compártelo con tus amigos.

No hay comentarios:

Publicar un comentario

IconIconIcon