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
- Instalando as dependências
- Criando a aplicação
- Configurando o Gmail
- Utilizando o Nodemailer
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
Com a pasta criado vamos entrar nela e de fato iniciar um projeto node
cd node-mail
npm init -y
Instalando as dependências
Com nosso projeto iniciado, vamos precisar instalar duas dependências que são:
- express
- nodemailer
npm i express nodemailer
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();
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`)
});
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`)
});
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"
}
}
Depois de rodar o comando npm start
e entrar em http://localhost:3000 você deve ver a resposta em JSON da nossa rota
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.
Ainda na aba de Verificação em duas etapas, no final você terá a opção 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.
Irá aparecer um tela com a sua senha gerada copie ela e vamos voltar para o código.
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;
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`)
});
Vamos rodar a API com npm start
e acessar a rota /send-email
. E se tudo der certo teremos a resposta:
E se você conferir o email do destinatário verá que o email foi recebido com sucesso!
Top comments (1)
Ótimo artigo, simples e objetivo. Me ajudou bastante. Obrigado.