-
Notifications
You must be signed in to change notification settings - Fork 12
Envio de E mail
Por comodidade vamos utilizar o Express e o pacote npm, o Nodemailer. Ele é um módulo Node de código aberto que nos permite enviar e-mails. O projeto foi iniciado em 2010 e hoje é uma das principais escolhas para quem deseja enviar mensagens eletrônicas por meio de sua aplicação. Ele está sob a licença MIT.
npm install --save nodemailer
Primeiramente, importamos o módulo para dentro da nossa aplicação:
const nodemailer = require('nodemailer');
Indicamos ao Nodemailer qual será o serviço de e-mail que será utilizado para enviar as mensagens. Para isso, utilizamos o método createTransport que recebe como parâmetro um objeto literal com os dados de configuração. Como exemplo, irei configurar um e-mail dentro do meu domínio.
const transporter = nodemailer.createTransport({
host: "mail.***.com.br",
port: 25,
secure: false, // true for 465, false for other ports
auth: {
user: "no-reply@***.com",
pass: "***"
},
tls: { rejectUnauthorized: false }
});
Configuramos os dados sobre o e-mail que será enviado. Para isso, criaremos uma variável e armazenamos as informações nela:
const mailOptions = {
from: 'no-reply@***.com',
to: '[email protected]',
subject: 'E-mail enviado usando Node!',
text: 'Confirmação de e-mail, você solicitou? ;)'
};
Estes campos são os necessários para que o serviço funcione. Com os dois, conseguimos fazer a realização do envio com o método sendMail. Ele aceita dois parâmetros: o primeiro será as opções do envio (que colocamos no objeto mailOptions) e a segunda é a função de callback, que será chamada depois que o serviço for realizado. Esta função recebe dois outros parâmetros: error e info. O primeiro será retornado se ocorrer qualquer tipo de problema no envio (ex: problema para autenticar), caso contrário, será null. O segundo parâmetro retornará os dados sobre o envio.
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email enviado: ' + info.response);
}
});
Podemos configurar múltiplos destinatários em um único envio, basta separá-los com vírgula. Como no exemplo anterior, poderia ter configurado vários endereços:
const mailOptions = {
…,
to: '[email protected], 'destinatario2@address.com, '[email protected]',
};
A mensagem não seja apenas um texto, podemos usar o atributo html.
const mailOptions = {
…,
html: '<h1>Título</h1><p>Texto!</p>'
}