Email transaccional para desarrollo

Qué es Mailtrap

Hoy quiero hablar sobre una de esas herramienta de desarrollo de las que no puedes prescindir desde el momento en que las conoces.

Me refiero a Mailtrap, un SaaS que proporciona una funcionalidad simple pero eficaz, servir de buzón de entrada de correos mientras estamos programando servicios que hacen uso del envío de emails transaccionales.

A quién de nosotros no nos ha pasado que estamos programando una funcionalidad que necesita enviar correos electrónicos transaccionales al usuario, y andamos poniendo buzones de correo que usamos para otros fines, como cuentas propias, las corporativas del curro o una que creamos a propósito en gmail y luego no volvemos a usar por dejadez o por perder las credenciales... dime que me equivoco 😉

Esta buena gente dispone de múltiples planes a los que acogerse, siendo uno de ellos gratuito y más que suficiente si programamos en solitario, o si no necesitamos colaborar con otros miembros del equipo de desarrollo.

Además proporcionan acceso gratuito a ONGs y proyectos OpenSource.

Funcionamiento

Visto que se puede usar en modo free forever, pasamos a ver como funciona.

Una vez registrado en el servicio, te proporcionan las credenciales SMTP y POP3, las cuales puedes resetear tantas veces como quieras. Aunque debes recordar que por limitaciones de la cuenta gratuita, solo podremos enviar correos al buzón que nos han asignado de forma automática, que además no tendremos un buzón con nombre propio, y por lo tanto las credenciales POP3 no nos servirán de nada... a no ser que ampliemos a una cuenta de pago.

Cuenta con muchas integraciones, siendo alguna de ellas:

  • Ruby on Rails
  • Django
  • Laravel / Symfony 2.0 / WordPress
  • Node.js
  • Java
  • C#
Parámetros de Mailtrap para NodeMailer
Parámetros de Mailtrap para NodeMailer

Para poder usarlo en tu desarrollo tendrás que agregar las credenciales de acceso a tu código y usar la librería que quieras para hacer el envio. En mi caso uso NodeMailer y quedaría tal que así:

const nodemailer = require('nodemailer');

let { SANDBOX } = require('../../config/index').EMAIL;

let transporter = nodemailer.createTransport({
host: SANDBOX.HOST,
port: SANDBOX.PORT,
secure: SANDBOX.SSL,
auth: {
user: SANDBOX.USERNAME,
pass: SANDBOX.PASSWORD
},
tls: {
rejectUnauthorized: SANDBOX.REJECT_UNAUTHORIZED
}
});

transporter.verify( (error) => {
if (error) {
global.__logger(error);
} else {
console.log('sandbox email server is ready');
}
});

exports.send = (email) => {
return new Promise( async (resolve, reject) => {
try {
await transporter.sendMail(email);
resolve();
} catch(error) {
reject(error);
}
});
};

Una vez que envies un email, este aparecerá en la bandeja de entrada de Mailtrap. La cuenta gratuita puede mantener hasta 50 mensajes en el buzón. Además es posible acceder a la información del mensaje recibido como texto, html o tal cual lo ha recibido el servidor, incluyendo las cabeceras.

Buzón de Mailtrap para NodeMailer
Buzón de Mailtrap para NodeMailer

Resumiendo, Mailtrap es un servicio que a mi me ha servido de mucho, eliminando dolores de cabeza a la hora de probar envios de correos desde código... y además gratuito.