Email

Entrega programada de emails con Mailgun y Node.js

Escrito por Timothy Voice, desarrollador de software con sede en Brooklyn y entusiasta de MEAN.JS. Este artículo se publicó originalmente en su blog.
Imagen para Entrega programada de emails con Mailgun y Node.js

Esta es una versión actualizada del artículo «Entrega programada de emails con Mailgun y Node.js» escrito por Timothy Voice, desarrollador de software con sede en Brooklyn y entusiasta de MEAN.JS. El artículo original se publicó por primera vez en su blog.

Por lo general, a la mayoría de nosotros no nos gustan las cosas malas, o «mean» en inglés (a menos que hablemos de la película Mean Girls, quizá). Sin embargo, hay algunas cosas «mean» que pueden resultar muy útiles. Una de ellas es la aplicación MEAN (MongoDB, Express.js, AngularJS y Node.js), que te permite crear sitios web y aplicaciones móviles. ¿Quieres más información? Empecemos.

¿Qué es la entrega programada de emails?

La entrega programada de emails es un invento bastante reciente, pero se ha popularizado rápidamente en lo que respecta a los mensajes de email. Es común en la mayoría de los principales proveedores de servicios de internet como Microsoft Outlook, Gmail y Yahoo, y te permite retrasar la entrega de tus mensajes para un momento posterior. Al redactar un mensaje, es posible que quieras que se entregue a una hora concreta en lugar de enviarse de inmediato. La programación de emails te permite mantener tus mensajes en la bandeja de salida hasta que quieras enviarlos. Sencillo, ¿verdad?

¿Por qué la gente programa los emails para más tarde?

La gente envía emails por una gran variedad de motivos (créenos, lo sabemos). En ocasiones, si un equipo colabora desde distintas zonas horarias, es posible que quieran retrasar la entrega hasta que los destinatarios hayan comenzado su jornada laboral para que el email sea lo primero que vean. Otras veces, es posible que prefieran posponer la entrega cuando tienen ideas o tareas a las que quieren hacer seguimiento más adelante. La posibilidad de retrasar el envío durante un periodo de tiempo determinado les permite recordarse a sí mismos lo que quieren lograr con un nuevo email. 

Por supuesto, la entrega programada de emails no se produce por arte de magia. Entonces, ¿dónde entra en juego MEAN?

¿Por qué MEAN es importante para la entrega programada de emails?

En cuanto a funciones, la increíble aplicación MEAN que has creado puede ayudarte a enviar emails transaccionales como asistencia para tu servicio en general (confirmaciones por email, contraseñas olvidadas, notificaciones, etc.). Y esto incluye, por supuesto, opciones de entrega de emails. Existe un tipo de aplicaciones en las que el email es el servicio, como las aplicaciones del tiempo, la entrega de newsletters, etc., y ahí es donde entra en juego la entrega programada de emails. Para estos servicios, necesitamos que nuestra aplicación envíe emails a los usuarios automáticamente a horas determinadas y bajo ciertas condiciones. Al combinar algunos módulos de npm excelentes y conectarlos a un servicio de envío de emails, esto se puede lograr rápidamente.

¿Cómo se configura MEAN con Mailgun para lograr la entrega programada de emails?

Para añadir la funcionalidad de emails programados a tu aplicación MEAN, sigue los pasos que indicamos a continuación.

Necesitarás 4 funciones: una función mailUsers para seleccionar a los destinatarios, una función mailCreator para generar el email desde una plantilla, una función mailScheduler para activar el envío a una hora determinada y una función mailSender para enviar los emails.

La configuración

Requiere los módulos de Node e incluye Nunjucks para poder añadir variables a tus plantillas de email en HTML.

Consulta de usuarios

Utilizamos la consulta find(x).where(y) de Mongoose para filtrar a los usuarios y buscar a aquellos que han elegido recibir notificaciones en un día determinado y devolver una promesa.

El creador de emails

El mailCreator toma una matriz de usuarios y genera otra matriz que contiene las direcciones de email de los usuarios y la plantilla HTML renderizada por Nunjucks.

El sistema de envío

La función mailSender tomará el email del usuario, el asunto y la plantilla HTML de nuestro email y devolverá una promesa que, cuando se resuelva, contendrá la respuesta de la API de Mailgun; algo como «En cola». Muchas gracias’.

El programador

Aquí, tu función de programación toma el trabajo que queremos realizar y lo ejecuta cuando lo dictan la variable y la descripción de la regla. Por ejemplo: usar un programador de Node todos los días para programar un envío diario a las 16:38. Consulta aquí cómo crear reglas de recurrencia en node-scheduler.

Uniendo todas las piezas

Ahora, todo lo que tienes que hacer es llamar a la función de programación dentro del controlador de nodos de entrega, pasando los usuarios que devolvió tu consulta, tu generador de emails y el remitente de emails. Puedes encontrar todo el sistema en un solo controlador de Node aquí. Aquí tienes un ejemplo de una llamada de envío programado:

Ahora tienes un controlador que buscará a los usuarios que hayan elegido recibir notificaciones para una hora determinada, y les enviará un email cuando se active tu programador de trabajos.

Este controlador te permitirá aplicar reglas de envío, gestionar la entrega y mucho más. A través de esta integración de aplicación MEAN, podrás programar emails fácilmente.

En resumen

Aunque descubrir todos los detalles de la entrega programada de emails puede ser complicado, usar una integración de aplicación MEAN con Mailgun puede ayudarte a tomar el control de la programación de tus emails y enviarlos exactamente cuando deben salir. Y eso es muy fetch.