Como enviar e-mail usando Node.js?
O correio eletrônico é um método amplamente utilizado para transferir / trocar mensagens entre pessoas. Geralmente enviamos o e-mail com qualquer software ou aplicativo como Gmail, Outlook, Thunderbird Mail e Yahoo, etc. Também podemos codificar o conceito básico desses aplicativos em um aplicativo node.js usando qualquer biblioteca de terceiros que possa interagir com os sistemas de rede e enviar um e-mail.
Nodemailer: Existem vários módulos disponíveis para o envio de emails, mas o nodemailer é o mais popular e nos fornece um procedimento simples e funcionalidade para enviar emails.
Recursos do Nodemailer:
- Ele oferece suporte a vários recursos, como adição de HTML no e-mail, caracteres Unicode, envio de anexos com o texto, etc.
- Ele usa o protocolo de transferência de correio simples (SMTP). Abaixo está a abordagem passo a passo a ser seguida para integrar este módulo em nosso aplicativo.
Etapa 1: Instalação do módulo: Grave o comando no terminal para instalar o nodemailer e, em seguida, importe na parte superior de seu aplicativo nodejs.
npm install nodemailer
Agora estamos prontos para importar isso para nosso aplicativo.
const nodemailer = require('nodemailer');
Etapa 2: Criar objeto transportador: existe um método createTransport no nodemailer que aceita um objeto com algumas configurações e, finalmente, retorna um objeto transportador. Este objeto será necessário posteriormente para enviar emails.
const transporter = nodemailer.createTransport(transport[, defaults]);
Aqui, estamos usando o Gmail como um serviço apenas para fins de amostra, embora o nodemailer possa ser facilmente integrado a qualquer outro serviço de e-mail. No Gmail, podemos tornar nossa conta menos segura ou usar a autenticação de segurança Oauth2, a menos que normalmente o Google não permita o envio de nenhum e-mail via node.js.
Conta menos segura: Visite este link para tornar sua conta menos segura . Depois de fazer isso, podemos criar nosso objeto transportador de trabalho apenas com o nome de usuário e a senha de sua conta do Gmail.
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: secure_configuration.EMAIL_USERNAME,
pass: secure_configuration.PASSWORD
}
});
Usando Oauth2: de acordo com os documentos oficiais aqui, precisamos fornecer o ID do cliente, o segredo do cliente, o token de atualização e um token de acesso junto com o nome de usuário e a senha. Siga a abordagem passo a passo para obter essas configurações do console do Google Cloud.
1. Abra o Google Cloud Console: nesta etapa, obteremos nosso ID e segredo do cliente. Visite o site do Google Cloud Console e registre-se / faça login você mesmo. Em seguida, prossiga para a seção API e serviços na barra de navegação mais à esquerda. Agora verifique o painel e crie um projeto. Depois disso, visite a tela de consentimento do Oauth para se registrar sobre seu aplicativo nesta etapa, certifique-se de selecionar o tipo de usuário externo e adicionar alguns / um Usuários de Teste. Após esta etapa, vá para a seção de credenciais e clique em Criar credenciais e, em seguida, escolha Oauth2 ClientID e escolha o tipo de aplicativo como um aplicativo da web, certifique-se também de adicionar o URI de redirecionamento como playground OAuth ( copie o link daqui) Finalmente, você terá sucesso em obter seu client_id e client_secret.
2. Abra o Oauth2 Playground: aqui obteremos nosso token de atualização e o token de acesso. Visite o playground OAuth2 , clique no ícone de configuração oauth2.0 à direita e marque a caixa de seleção usar suas próprias credenciais e forneça o mesmo ID de cliente e segredo que você obteve no console da nuvem. Agora selecione a API do Gmail para autorização. Clique em Autorizar API e, em seguida, autorize-o com o mesmo id do Gmail que você preencheu como um usuário de teste na seção de credenciais da última etapa. Por fim, clique no código de autorização de troca para tokens e isso fornecerá um token de atualização e um token de acesso.
Nota: Sugerimos que você abra esses gifs em uma guia separada e siga as duas abordagens separadamente e não pule em nenhum intervalo, pois isso o salvaria de muita confusão. Também não tente copiar este ID de cliente e segredo do cliente, etc. . não vai funcionar.
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
type: 'OAuth2',
user: secure_configuration.EMAIL_USERNAME,
pass: secure_configuration.PASSWORD,
clientId: secure_configuration.CLIENT_ID,
clientSecret: secure_configuration.CLIENT_SECRET,
refreshToken: secure_configuration.REFRESH_TOKEN
}
});
Com isso nosso objeto transportador está pronto e agora podemos enviar nossos emails.
Etapa 3: Configurar o e-mail: Antes de enviar o e-mail, temos que criar algumas configurações de mensagem, como o que enviar para onde enviar, etc. É muito fácil criar essas configurações, pois existem vários pares de valores-chave , a partir dos quais você pode fornecer os necessários junto com alguns outros valores para a chave predefinida.
Enviando um texto simples para um e-mail:
const mailConfigurations = {
// It should be a string of sender email
from: 'mrtwinklesharma@gmail.com',
// Comma Separated list of mails
to: 'smtwinkle451@gmail.com',
// Subject of Email
subject: 'Sending Email using Node.js',
// This would be the text of email body
text: 'Hi! There, You know I am using the'
+ ' NodeJS Code along with NodeMailer '
+ 'to send this email.'
};
Saída: Se enviarmos o e-mail com essas configurações, algo assim será enviado para o destinatário. Embora nosso código esteja incompleto no momento, aqui estamos apenas mostrando como essa configuração de mensagem ficará quando o código for concluído.
Envio para vários e-mails: Podemos concatenar mais e-mails com uma vírgula como separador.
const mailConfigurations = {
from: 'mrtwinklesharma@gmail.com',
to: 'smtwinkle451@gmail.com, anyothergmailid@gmail.com',
subject: 'Sending Email using Node.js',
text: 'Hi! There, You know I am using the NodeJS Code'
+ ' along with NodeMailer to send this email.'
};
Enviando algum conteúdo HTML: Basta substituir o texto simples por HTML e fornecê-lo à chave html .
const mailConfigurations = {
from: 'mrtwinklesharma@gmail.com',
to: 'smtwinkle451@gmail.com',
subject: 'Sending Email using Node.js',
html: "<h2>Hi! There</h2> <h5> This HTML content is
being send by NodeJS along with NodeMailer.</h5>"
};
Saída:
- Enviando alguns anexos, o Nodemailer é tão flexível no envio de anexos , você pode enviar qualquer tipo de arquivo que esteja sendo aceito pelo serviço de e-mail.
const mailConfigurations = {
from: 'mrtwinklesharma@gmail.com',
to: 'smtwinkle451@gmail.com',
subject: 'Sending Email using Node.js',
text:'Attachments can also be sent using nodemailer',
attachments: [
{
// utf-8 string as an attachment
filename: 'text.txt',
content: 'Hello, GeeksforGeeks Learner!'
},
{
// filename and content type is derived from path
path: '/home/mrtwinklesharma/Programming/document.docx'
},
{
path: '/home/mrtwinklesharma/Videos/Sample.mp4'
},
{
// use URL as an attachment
filename: 'license.txt',
path: 'https://raw.github.com/nodemailer/nodemailer/master/LICENSE'
}
]
};
Saída:
Não apenas estes, mas o nodemailer tem muitas possibilidades para configurações de mensagens, você pode verificar todas aqui .
Etapa 4: Enviar e-mail: use qualquer uma das abordagens acima para prosseguir com o objeto transportador e, em seguida, escolha qualquer uma das configurações de e-mail para enviar a correspondência.
Existe um método sendMail no objeto transportador que aceita configurações de email e uma função de retorno de chamada que será executada quando o email for enviado ou devido a um erro.
transporter.sendMail(mailConfigurations[, callback]);
transporter.sendMail(mailConfigurations, function(error, info){
if (error) throw Error(error);
console.log('Email Sent Successfully');
console.log(info);
});
Etapa 5: Combine todos eles
Você pode escolher qualquer opção nas etapas 2 e 3. Depois de fornecê-lo ao método sendMail, você poderá enviar um e-mail com o node.js.
Explicação: Aqui, importamos o módulo nodemailer no início e, em seguida, usamos o tipo de autenticação Oauth2; posteriormente, há a configuração de mensagem mais básica que está sendo usada. Finalmente, o método sendMail está enviando o e-mail para os destinatários fornecidos na configuração da mensagem.
Nota: - O módulo seguro que está sendo importado não tem nada a ver com este nodemailer, eu apenas o usei para proteger minhas credenciais.
const nodemailer = require('nodemailer');
const secure_configuration = require('./secure');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
type: 'OAuth2',
user: secure_configuration.EMAIL_USERNAME,
pass: secure_configuration.PASSWORD,
clientId: secure_configuration.CLIENT_ID,
clientSecret: secure_configuration.CLIENT_SECRET,
refreshToken: secure_configuration.REFRESH_TOKEN
}
});
const mailConfigurations = {
from: 'mrtwinklesharma@gmail.com',
to: 'smtwinkle451@gmail.com',
subject: 'Sending Email using Node.js',
text: 'Hi! There, You know I am using the NodeJS '
+ 'Code along with NodeMailer to send this email.'
};
transporter.sendMail(mailConfigurations, function(error, info){
if (error) throw Error(error);
console.log('Email Sent Successfully');
console.log(info);
});
Saída: execute este snippet de código com o comando node e esta será a saída no console e na caixa de entrada do Gmail.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva