Skip to content

Envio de E mail

Bajo Mendez edited this page Sep 7, 2019 · 2 revisions

Sistema de envio de emails automático pelo sistema

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.

Sua instalação se dá pelo seguinte comando:

npm install --save nodemailer

Configuração

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);
  }
});

Configurações adicionais

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>'
}