Aunque hasta ahora nunca hemos hablado de Bonfire, sí lo hemos hecho de Codeigniter. Presentamos rápidamente qué es Bonfire y vamos al lío de enviar un email desde el mismo.
¿Qué es Bonfire 🔥?
(Lo de la llamita es porque Bonfire significa “hoguera” en inglés)
Sencillo, Bonfire es un CMS open source para Codeigniter, extiende las funcionalidades más habituales de Codeigniter para ahorrarnos tiempo a los desarrolladores. Personalmente una de las cosas que más interesan de Bonfire es que los modelos ya vienen con los métodos típicos preparados, como las inserciones o los find_by… echa un ojo a la documentación y si te gusta deja un comentario.
Visto, sigamos.
Enviando un email desde Bonfire Codeigniter
Esto es también ridículamente fácil, Bonfire integra una librería lista para enviar email. Para usarla sigue estos pasos:
- Ten listo un servidor de correo, como Postfix (damos por hecho que lo tienes, ya contaremos otro día cómo montar uno).
- Prepara el contenido para enviar, puede ser directamente un vista, es la forma buena de enviar emails sacándole jugo a la plataforma. Esta parte la obviamos, puede ser también un string.
- Carga la librería en el controlador, así:
$this->load->library('emailer/emailer');
- También en el contraolado (sé que es obvio, no quiero ofender tu inteligencia) inserta un código como éste para enviar y manejar los posibles errores.
$data = array( 'to' => $emailDestino, 'subject' => 'Asunto', 'message' => $contenido ); if ($this->emailer->send($data)) { //Mensaje de confirmación de éxito Template::set_message('Se envió el mensaje!!', 'success'); } else { //Triste mensaje de error en el envio Template::set_message('Unable to send an email: '. $this->emailer->errors, 'error'); }
Algunas cosas a tener en cuenta son:
- En la respuesta de la librería emailer podemos tener falsos mensajes de éxito, esto se debe a que se obtiene true siempre que el email se entrega al MTA, que no es lo mismo que decir que el MTA ha entregado el correo correctamente. Pero como esto ya depende del servidor de email queda fuera de nuestro alcance.
- Template::set_message escribirá en la vista si está bien preparada para ello, si no, no, pero ésta es la forma correcta de hacerlo.
- Ten cuidado con esto para evitar problemas de spam reporting en los ISPs, vaya, no dejes que se envíen muchos emails.
Y esto es todo. Espero que haya sido útil.