¿Cómo enviar emails en Node JS sin tanto rollo? 🧐

Jimmy Vasquez
Nerd For Tech
Published in
5 min readJul 2, 2023
Node JS + NodeMailer + Gmail

Uno de los temas que más recuerdo y le tuve miedo o simplemente pensé que eran muy complicados era el envio de emails desde el backend. Después de que pude utilizar herramientas como nodemailer vi que era un tema bastante sencillo (claro, dejando de lado super arquitecturas en proyectos grandes), pero después de ciertas actualizaciones en diversos servidores de correos como gmail u outlook, diversos tutoriales o videos que veia en internet quedaron desactualizados porque te enseñaban como usar la herramienta pero no a configurar lo que debías cambiar en tu servicio de correo 🫠, copiabas el tutorial pero no funcionaba. Por eso en este blog veremos como usar nodemailer de manera fácil para enviar emails a traves de gmail y si, sin tanto sufrimiento o dolores de cabeza. Así podrás “sacar la chamba” ☝🤓.

Configurando Gmail

Para esto, claro que necesitamos una cuenta de gmail. Lo primero que haremos es entrar google.com y en la pestaña de tu perfil entraremos a gestionar cuenta tu cuenta de google:

google.com

Dentro de esta sección, nos moveremos a seguridad:

Seguridad dentro de gestioanr mi cuenta de google

Ahora, este es de los puntos más importantes para poder lograr nuestro objetivo. Dentro de las opciones veremos autenticación de dos pasos, sino la tienes activada deberás hacerlo:

Una vez que ya la tengas activa o en su caso, ya la tenias activada solo debemos dar click y entrar a configurar, haciendo esto nos pedirá nuestra contraseña para ingresar y dentro de esta sección haremos scroll hasta la ultima parte llamada contraseñas de apps:

Contraseñas de apps

Entrando a esa sección nos aparecerá la opción de crear una nueva contraseña de aplicación, nos pedirá seleccionar aplicación y dispositivo, posteriormente un nombre. Para esto seleccionamos:

  1. Correo
  2. Otras

En este ultimo paso aparecerá la contraseña con un fondo amarillo después de poner el nombre, debes asegurarte de copiarla y pegarla en algún lugar porqué no podrás consultarla de nuevo.

Nombre: (el que quieras), en este caso usare nodemailer como nombre

Crear nuevas contraseñas

Copiando y guardando la contraseña en un lugar seguro, eso sería todo lo que haríamos del lado de gmail, quedando algo como esto:

Contraseña creada de forma correcta

Creando el proyecto de Node JS

Ahora nos dedicaremos a crear un pequeño proyecto en node js para enviar los emails, para esto abriremos nuestra consola de comandos y crearemos una carpeta:

Dentro de nuestra carpeta procederemos a crear un proyecto nuevo:

Ahora nos toca instalar nodemailer:

De igual forma, te dejo la documentación oficial de nodemailer: https://nodemailer.com/about/

En mi caso, abriré el proyecto en mi editor de código favorito que es VSCode, de modo que por ahora solo tendremos 3 archivos:

Por ultimo, entraremos al package.json y agregaremos un nuevo script a la propiedad scripts:

"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js" //Agregamos start
},

Escribiendo el código para enviar emails

Dentro de nuestro editor, crearemos un archivo nuevo llamado index.js y dentro del mismo escribimos el siguiente código:

const nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'tucorreo', //Tu cuenta de gmail
pass: 'tucontraseña' //Aqui va la contraseña que generamos en el paso anterior de gmail
}
});

const mailOptions = {
from: 'tucorreo', //tu cuenta de gmail
to: 'elcorreoquequierasenviarle', //Un ejemplo de correo al que quieres que llegue tu email
subject: 'Correo de prueba desde Node', //Cabecera
text: '¡Hola!' //texto a enviar
};

console.info('Enviando correo ...')
transporter.sendMail(mailOptions, (error, info)=> {
if (error) {
console.log(error);
} else {
console.log('Enviado! ' + info.response);

}
});

En este caso, yo usaré una herramienta para generar un correo electrónico temporal y a esa cuenta enviar nuestro email de prueba:

https://temp-mail.org/es/

Obteniendo tu correo de prueba, lo puedes reemplazar en el objeto mailOptions. Ya que reemplazaste las demás propiedades con tus propios datos, podemos probar nuestra integración corriendo npm start en consola:

De acuerdo a la consola, tarda un momento en enviar el correo, por lo que vamos a nuestro correo temporal después de ver el OK:

¡Listo! 🤟
Hemos enviado de forma muy fácil un email a través de nodemailer y gmail. Si tuviste algun problema para enviarlo o la consola te mostro errores, puede ser por las credenciales al momento de reemplazarlas. Puedes dejarme un comentario y con gusto te ayudaré.

Siguientes pasos

Como notaste, enviamos solo un pequeño texto en nuestro email de prueba pero tambien se pueden enviar más cosas como:

  1. Un archivo html con estilos interpolado con JS.
  2. Templates html como handlebars, estos necesitan más configuración pero es posible, te dejo un link: https://community.nodemailer.com/2-0-0-beta/templating/.
  3. Configuraciones SMTP más avanzadas.

✍ and post with ❤ by JimmyVazz

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Nerd For Tech
Nerd For Tech

Published in Nerd For Tech

NFT is an Educational Media House. Our mission is to bring the invaluable knowledge and experiences of experts from all over the world to the novice. To know more about us, visit https://www.nerdfortech.org/.

Jimmy Vasquez
Jimmy Vasquez

Written by Jimmy Vasquez

|Software Engineer 📱|Writer 👔|Geek|Filmmaker 📹| Web 3 Developer 🖥 |

No responses yet

Write a response