primeiro iremos instalar o nodemailer e o pacote types, digite os seguintes códigos no terminal:
npm install nodemailer --save
npm install @types/nodemailer --save
após a instalação, no arquivo em que deseja realizar o envio de e-mail, faça os seguintes passos:
1- Importe o nodemailer:
import nodemailer from 'nodemailer';
2- crie um transporter (objeto que vai ser capaz de realizar o envio):
const transporter = nodemailer.createTransport({
host: 'smtp.office365.com',
port: 587,
secure: false,
auth: {
user: 'myEmail@outlook.com',
pass: 'Password'
}
});
Para isso usamos o método nodemailer.createTransport() e passamos como argumento um objeto com algumas informações:
- host: o endereço do hospedeiro do e-mail, nesse caso passamos o valor 'smtp.office365.com';
- port: é a porta em que vamos realizar a conexão, por padrão ela será 587 se secure for false e 465 se verdadeiro, nesse transporter definiremos ela como 587;
- secure: recebe true ou false, se receber true a conexão usará TLS ao conectar-se ao servidor, se false o TLS será usado se o servidor suportar a extensão STARTTLS. Como estamos usando a porta 587 manteremos seu valor como false;
- auth: vai receber um objeto de autenticação do e-mail, dentro dele definiremos a chave user com seu valor contendo o e-mail que vamos utilizar para o envio, e a chave pass que contém a senha do e-mail;
Com essas informações já podemos testar as nossas configurações SMTP com a chamada de verify(callback), use:
transporter.verify(function (error, success) {
if (error) {
console.log(error);
return
}
console.log("Server is ready to take our messages");
});
caso ocorra tudo bem, a mensagem "Server is ready to take our messages" aparecerá no seu servidor, se ocorrer algum erro recomendo olhar o site nodemailer, nele você poderá ver como configurar melhor o seu objeto transporter para atender ao seu caso.
3- Crie um objeto com as informações que serão enviadas:
let mailOptions: nodemailer.SendMailOptions = {
from: 'username <myEmail@outlook.com>',
to: 'email@example.com',
subject: 'hello world!',
html: '<h1> Hello world </h1>',
text: 'hello world'
}
nesse objeto criado definimos seu tipo e passamos as seguintes chaves:
- from: vai receber uma string com seu nome de usuário e em seguinda o e-mail que estamos utilizando no transporter entre os símbolos <>;
- to: nesse exemplo usamos uma string com o e-mail destinatário que irá receber o e-mail, mas caso deseja enviar para múltiplos e-mails pode ser passado uma lista com eles como seu valor;
- subject: recebe o assunto do e-mail que vai ser enviado;
- html: recebe o conteúdo do e-mail no padrão html pra ser interpretado;
- text: recebe como valor a versão de texto simples da mensagem, tbm necessário caso não seja possível a interpretação do html;
- attachments: nesse caso nós não utilizamos dele, mas pode ser utilizado para fazer o envio de anexos, você pode ver um exemplo em: attachments;
4- usar o método para enviar o email:
// sending with callback
transporter.sendMail(mailOptions, (error: Error | null, info: nodemailer.SentMessageInfo): void => {
// code
})
// sending with promisse
transporter
.sendMail(mailOptions)
.then( (info : SentMessageInfo) => info.messageId)
.catch( (err : Error) => {})
Para realizar o envio do email usamos o método sendMail() do transporter passando como argumento o objeto criado anteriormente.
e é isso, espero que tenha ajudado! :)
Top comments (0)