DEV Community

IamThiago-IT
IamThiago-IT

Posted on

Nodemailer: Enviando E-mails com Facilidade em Aplicações Node.js

Enviar e-mails é uma funcionalidade essencial em muitas aplicações web, seja para verificação de contas, notificações de eventos ou simplesmente para comunicação com usuários. Uma das bibliotecas mais populares para essa tarefa no ambiente Node.js é o Nodemailer. Neste artigo, vamos explorar o Nodemailer, mostrando como configurá-lo e utilizá-lo para enviar e-mails em suas aplicações.

O que é o Nodemailer?

Nodemailer é uma biblioteca para Node.js que permite o envio de e-mails de forma simples e eficiente. Ele suporta diversos serviços de e-mail e protocolos, incluindo SMTP, OAuth2, Sendmail e outros. Criado por Andris Reinman, o Nodemailer tem sido amplamente adotado pela comunidade Node.js devido à sua facilidade de uso e flexibilidade.

Instalando o Nodemailer

Para começar a usar o Nodemailer, primeiro você precisa instalá-lo em seu projeto Node.js. Você pode fazer isso utilizando o npm (Node Package Manager):

npm install nodemailer
Enter fullscreen mode Exit fullscreen mode

Configurando o Nodemailer

A configuração do Nodemailer é bastante direta. Aqui está um exemplo básico de configuração para enviar e-mails usando um serviço SMTP, como o Gmail:

const nodemailer = require('nodemailer');

// Crie um transportador utilizando o serviço SMTP do Gmail
let transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: 'seuemail@gmail.com',
    pass: 'suasenha'
  }
});
Enter fullscreen mode Exit fullscreen mode

Para garantir a segurança, é recomendável usar variáveis de ambiente para armazenar informações sensíveis como credenciais de e-mail. Veja como isso pode ser feito:

require('dotenv').config();
const nodemailer = require('nodemailer');

// Crie um transportador utilizando variáveis de ambiente
let transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: process.env.EMAIL_USER,
    pass: process.env.EMAIL_PASS
  }
});
Enter fullscreen mode Exit fullscreen mode

No arquivo .env:

EMAIL_USER=seuemail@gmail.com
EMAIL_PASS=suasenha
Enter fullscreen mode Exit fullscreen mode

Enviando E-mails

Depois de configurar o transportador, enviar e-mails é muito simples. Aqui está um exemplo de como enviar um e-mail:

let mailOptions = {
  from: 'seuemail@gmail.com',
  to: 'destinatario@example.com',
  subject: 'Assunto do E-mail',
  text: 'Corpo do e-mail em texto simples',
  html: '<h1>Corpo do e-mail em HTML</h1>'
};

transporter.sendMail(mailOptions, function(error, info){
  if (error) {
    return console.log(error);
  }
  console.log('E-mail enviado: ' + info.response);
});
Enter fullscreen mode Exit fullscreen mode

Com isso, você enviou seu primeiro e-mail usando Nodemailer!

Personalizando E-mails

O Nodemailer permite a personalização de e-mails de várias formas, incluindo o uso de templates. Você pode usar bibliotecas de templating como o Handlebars ou EJS para criar e-mails mais dinâmicos e atrativos.

Aqui está um exemplo usando Handlebars:

const hbs = require('nodemailer-express-handlebars');
const path = require('path');

// Configure o Handlebars como motor de template
transporter.use('compile', hbs({
  viewEngine: {
    extName: '.hbs',
    partialsDir: path.resolve('./views'),
    defaultLayout: false
  },
  viewPath: path.resolve('./views'),
  extName: '.hbs'
}));

let mailOptions = {
  from: 'seuemail@gmail.com',
  to: 'destinatario@example.com',
  subject: 'Assunto do E-mail',
  template: 'email', // Nome do arquivo de template
  context: {
    name: 'Nome do destinatário'
  }
};

transporter.sendMail(mailOptions, function(error, info){
  if (error) {
    return console.log(error);
  }
  console.log('E-mail enviado: ' + info.response);
});
Enter fullscreen mode Exit fullscreen mode

Conclusão

O Nodemailer é uma ferramenta poderosa e flexível para enviar e-mails em aplicações Node.js. Com uma configuração simples e suporte a várias opções de personalização, ele pode ser a solução ideal para suas necessidades de envio de e-mails.

Se você está buscando aprimorar suas habilidades em desenvolvimento web e Node.js, recomendo seguir o IamThiago-IT no GitHub. Lá, você encontrará diversos projetos e tutoriais que podem ajudar em seu aprendizado.

Comece a utilizar o Nodemailer hoje mesmo e facilite o envio de e-mails em suas aplicações Node.js!

Top comments (0)