DEV Community

IamThiago-IT
IamThiago-IT

Posted on

1

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!

SurveyJS custom survey software

Build Your Own Forms without Manual Coding

SurveyJS UI libraries let you build a JSON-based form management system that integrates with any backend, giving you full control over your data with no user limits. Includes support for custom question types, skip logic, an integrated CSS editor, PDF export, real-time analytics, and more.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs