Logo

dev-resources.site

for different kinds of informations.

Envio de email com NodeJS e Gmail

Published at
5/16/2023
Categories
node
nodemailer
javascript
tutorial
Author
matheusgondra
Author
13 person written this
matheusgondra
open
Envio de email com NodeJS e Gmail

Uma dúvida que eu tive há pouco tempo e talvez você também esteja tendo, já que veio até esse post, que é: Como enviar emails na minha aplicação NodeJS?

Fique até o fim desse post que eu te conto.

Iniciando o projeto

Bem vamos começar iniciando um novo projeto Node para começarmos. Vamos criar uma pasta para isso, vou chama-la de node-mail

mkdir node-mail
Enter fullscreen mode Exit fullscreen mode

Com a pasta criado vamos entrar nela e de fato iniciar um projeto node

cd node-mail

npm init -y
Enter fullscreen mode Exit fullscreen mode

Instalando as dependências

Com nosso projeto iniciado, vamos precisar instalar duas dependências que são:

  • express
  • nodemailer
npm i express nodemailer
Enter fullscreen mode Exit fullscreen mode

O express será usado para criarmos a nossa aplicação e o nodemailer será a biblioteca que servirá para enviar emails.

Criando a aplicação

Vamos criar um arquivo index.js. E criar uma aplicação express

const express = require("express");

const app = express();
Enter fullscreen mode Exit fullscreen mode

Em seguida, vou criaremos um rota / apenas para mostrar que a API está funcionando e vou iniciar o app na porta 3000.

app.get("/", (req, res) => {
    return res.json({ API: "OK" });
});

app.listen(3000, () => {
    console.log(`Server is running: http://localhost:3000`)
});
Enter fullscreen mode Exit fullscreen mode

No final nosso index.js deve está assim:

const express = require("express");

const app = express();

app.use(express.json());

app.get("/", (req, res) => {
    return res.json({ API: "OK" });
});

app.listen(3000, () => {
    console.log(`Server is running: http://localhost:3000`)
});
Enter fullscreen mode Exit fullscreen mode

Podemos criar um script start no package.json para rodar a nossa API para testarmos se está tudo funcionando.

{
  "name": "node-mail",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
     "start": "node index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.2",
    "nodemailer": "^6.9.1"
  }
}
Enter fullscreen mode Exit fullscreen mode

Depois de rodar o comando npm start e entrar em http://localhost:3000 você deve ver a resposta em JSON da nossa rota

Resposta da API em JSON

Configurando o Gmail

Para esse exemplo vou utilizar o Gmail para enviar nossos emails. Mas para isso vamos precisar configura-lo, pois o Gmail não permite que aplicativos não seguros acessem sua conta.

Primeiro você vai precisar entrar nas configurações de segurança da sua conta do Google. Você pode fazer isso entrando no Google e clicando na sua foto no canto superior direito e depois em Gerenciar sua Conta do Google.

Depois, na esquerda, você entrará na aba Segurança. E irá procurar e ativar a opção de Verificação em duas etapas.

Aba segurança

Ainda na aba de Verificação em duas etapas, no final você terá a opção Senhas de app.

Senhas de app

Aqui vamos criar uma senha para usarmos no nosso app. Selecione a opção Selecionar app e escolha Outro para darmos um novo personalizado e aperte em gerar.

Selecionar app

Irá aparecer um tela com a sua senha gerada copie ela e vamos voltar para o código.

Senha gerada

Utilizando o Nodemailer

Vamos criar o transporter do nodemailer. Crie o arquivo email-service.js

const nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({
    service: "gmail",
    auth: {
        user: "seu-email",
        pass: "eiydjkhxannposfr" // senha que geramos no gmail
    }
});

module.exports = transporter;
Enter fullscreen mode Exit fullscreen mode

Com o transporter criado podemos voltar ao index.js e criar uma rota que irá enviar o email

const express = require("express");
// Importando o transporter que criamos no email-service.js
const transporter = require('./email-service');

const app = express();

app.use(express.json());

app.get("/", (req, res) => {
    return res.json({ API: "OK" });
});

// Rota para enviar email
app.get("/send-email", async (req, res) => {
    try {
        const options = {
            from: "seu-email",
            to: "email-destino",
            subject: "Assunto do email",
            text: "Texto do email", // Texto caso o email do usuário não suporte HTML
            html: "<h1>HTML do email</h1>"
        };

        await transporter.sendMail(options);

        return res.json({ message: "Email enviado com sucesso" });
    } catch (error) {
        console.log(error);
        return res.status(500).json(error);
    }
});

app.listen(3000, () => {
    console.log(`Server is running: http://localhost:3000`)
});
Enter fullscreen mode Exit fullscreen mode

Vamos rodar a API com npm start e acessar a rota /send-email. E se tudo der certo teremos a resposta:

Email enviado com sucesso

E se você conferir o email do destinatário verá que o email foi recebido com sucesso!

nodemailer Article's
30 articles in total
Favicon
Brevo smtp emails to other gmail accounts silently failing , verified domain to the rescue
Favicon
Send emails using Nodemailer (Typescript)
Favicon
Simple Emails Sending from Node.js Using Nodemailer and SMTP
Favicon
Practical Guide to Send Emails from NodeJS/Express App using Gmail and Nodemailer (Screenshots and Code)
Favicon
Sending Emails in NextJs via Nodemailer
Favicon
Sending Emails in Node.js Using Nodemailer
Favicon
Sending e-mails with Sendgrid
Favicon
NestJS Emails with react-email and nodemailer
Favicon
nodeMailer after google security update
Favicon
Beginner’s Guide On Sending Automated Emails With Node.js, Nodemailer, and Cron Jobs
Favicon
Tracking Email Activity from AWS Simple Email Service (SES)
Favicon
Envio de email com NodeJS e Gmail
Favicon
Setting up Node.js Email Server with Nodemailer and Mailtrap
Favicon
Sending Emails from a Nodejs Application using Nodemailer
Favicon
Dynamic emails with handlebars and nodemailer
Favicon
Sending e-mails with Mailtrap
Favicon
Simple Next.JS Form to Email Using React-Hook-Form and Gmail
Favicon
How to send Email with NodeJS in 2022
Favicon
How to send email attachments using nodemailer
Favicon
Send emails from your website to any user super easily!
Favicon
How to Send an Email with Nodemailer
Favicon
Send email using next.js, react-hook-form, tailwindcss & nodemailer
Favicon
Nextjs - Nodemailer - React Hook Form - Tailwindcss
Favicon
How to send mail using Nodemailer?
Favicon
I created my own email server to send emails into my gmail for My Portfolio
Favicon
How to send mail using nodemailer in Angular 11?
Favicon
How I met your...Scraper?
Favicon
Отправка писем в NestJS используя nodemailer. Публикация скриптов.
Favicon
3 ways to send emails with only few lines of code and Gmail - Javascript - Part 1
Favicon
NodeJS – Send email by Nodemailer

Featured ones: