Em certos casos, um desenvolvedor pode querer enviar e-mails para os usuários de um aplicativo diretamente do servidor, como uma mensagem de boas-vindas ou um link de configuração de conta. Nodemailer , um módulo Node.js de dependência zero, torna mais fácil enviar e-mails de um servidor abstraindo algumas das complexidades que surgem ao conectar um aplicativo a um serviço de e-mail.

Neste tutorial, vamos cobrir como configurar um endereço de e-mail para Nodemailer, enviar e-mails de dentro de um aplicativo, anexar arquivos a um e-mail, adicionar campos para CC e BCC e, finalmente, adicione estilos CSS e HTML a um modelo de e-mail.

Para acompanhar este artigo, você precisará de:

Node.js v6.0.0 ou um mais recente versão instalada globalmente em sua máquina npm instalada globalmente em sua máquina Conhecimento básico de Node.js e JavaScript

Se desejar acompanhar, você pode ver o código desta demonstração em meu repositório GitHub . Vamos começar!

Configurando um endereço de e-mail para Nodemailer

Se você ainda não tem um endereço de e-mail que gostaria de usar para acompanhar, comece configurando um novo 1. Você pode usar qualquer serviço de e-mail, no entanto, se estiver usando uma conta do Gmail, há algumas etapas importantes que você precisa seguir para configurar sua conta.

Configuração do Gmail

Por padrão, o Gmail impede que os bots acessem e-mails hospedados nos servidores do Google. O Gmail executa várias verificações para garantir que cada conta de e-mail seja acessada por um usuário reconhecido em um local reconhecido.

Se a sua conta do Gmail tiver 2FA configurado, talvez você não consiga acompanhar. Você precisará desativar o 2FA ou criar uma nova conta com o 2FA desativado.

Na tela da imagem abaixo, permita que aplicativos menos seguros acessem sua conta do Gmail alternando o botão para LIGADO.

Configurando o servidor Node.js

Agora que nossa conta de e-mail está configurada corretamente, vamos começar a escrever nosso código.

Primeiro, crie um novo diretório. Chamei meu fassstmail:

mkdir fassstmail cd fassstmail

No diretório fassstmail, crie um novo projeto Node.js:

npm init-y

Em seguida, instalaremos Express Handlebars, um mecanismo de modelos que nos permite criar e-mail em HTML templates:

npm i nodemailer-express-handlebars nodemailer

Criando um modelo de email

Agora que instalamos as dependências necessárias, vamos configurar um modelo para enviar emails.

Na raiz do seu projeto, crie uma pasta chamada views. Dentro, crie um arquivo chamado email.handlebars, que conterá o código HTML e os estilos de nossos e-mails.

O Handlebars é uma linguagem de modelos, para que possamos adicionar variáveis ​​ao nosso HTML e, em seguida, substituir as variáveis ​​pelo valores que queremos em nosso e-mail final. Em Handlebars, as variáveis ​​são estruturadas com dois colchetes de abertura e fechamento em torno do texto da variável, como em {{variable}}.

No arquivo email.handlebars, vamos criar um modelo HTML para um e-mail de boas-vindas simples:

//email.handlebars E-mail de boas-vindas

Olá {{name}}!

Estamos felizes por ter você a bordo da {{empresa}}.

No modelo HTML acima, temos duas variáveis, {{name}} e {{company}}. Mais tarde, aprenderemos como substituir as variáveis ​​neste modelo por valores reais.

Enviando um e-mail no Nodemailer

Agora que temos nosso modelo de e-mail configurado, vamos criar um arquivo de entrada. Crie um arquivo chamado server.js na raiz do seu projeto fassstmail. Em server.js, adicione o seguinte código, que acionará o envio de um e-mail:

const hbs=require (‘nodemailer-express-handlebars’) const nodemailer=require (‘nodemailer’) const path=require (‘path’)//inicializar nodemailer var transporter=nodemailer.createTransport ({service:’gmail’, auth: {user:’[email protected]’, pass:’password_for_your_email_address’}});//aponta para a pasta de modelo const handlebarOptions={viewEngine: {partialsDir: path.resolve (‘./views/’), defaultLayout: false,}, viewPath: path.resolve (‘./views/’),};//use um arquivo de modelo com nodemailer transporter.use (‘compile’, hbs (handlebarOptions)) var mailOptions={from:'”Adebola”‘,//endereço do remetente para:’[email protected]’,//lista de destinatários assunto:’Bem-vindo!’, modelo:’email’,//o nome do arquivo de modelo, ou seja, email.handlebars contexto: {nome:”Adebola”,//substitua {{nome}} por empresa Adebola:’Minha Empresa’//substitua {{empresa}} por Minha Empresa}};//acionar o envio do e-mail transporter.sendMail (mailOptions, function (error, info) {if (error) {return console.log (error);} console.log (‘Mensagem enviada:’+ info.response );});

No objeto mailOptions, template se refere ao arquivo de template que queremos usar com o Nodemailer. Em nosso caso, queremos usar o arquivo email.handlebars. O objeto de contexto contém os valores reais que gostaríamos de usar no lugar das variáveis ​​em nosso arquivo de modelo do Handlebar.

Vou substituir a variável {{name}} por Adebola e a variável {{company} } with My Company.

Finalmente, para acionar o envio de um e-mail, chame a função transporter.sendMail e passe-a para o objeto mailOptions.

Para testar seu código, execute o nó de comando server.js em seu terminal. Você deve obter uma resposta que diz “mensagem enviada”. Você deve ver nosso último e-mail na sua caixa de entrada!

E é isso! Você enviou com sucesso um e-mail usando o Nodemailer. Você pode seguir as etapas descritas acima para enviar outros tipos de e-mail e pode até usar o Nodemailer para se notificar se algo der errado em seu servidor.

Agora, vamos aprender como adicionar anexos aos nossos e-mails.

Adicionando anexos ao seu e-mail

Na raiz do seu projeto, crie uma pasta chamada attachments, que conterá os arquivos que gostaríamos de adicionar como anexos ao nosso e-mail. Vou adicionar uma imagem chamada pic-1.jpeg adicionando-a à pasta de anexos.

Em seguida, adicione a seguinte linha ao objeto mailOptions.

var mailOptions={…, attachments: [{filename:”pic-1.jpeg”, path:”./attachments/pic-1.jpeg”}],}

No objeto mailOptions, attachments leva uma matriz, o que significa que você pode anexar qualquer tipo de arquivo para o e-mail que você está enviando. Agora, quando enviamos o e-mail, a imagem é anexada.

Para anexar outros tipos de arquivos ao seu e-mail, como PDFs ou documentos, basta seguir o mesmo processo.

Adicionando CC e BCC ao seu modelo de e-mail

Vamos adicionar campos para CC e BCC para encaminhar seu e-mail para vários endereços de e-mail de uma vez. Adicione o seguinte código ao seu objeto mailOptions:

var mailOptions={…, cc:’[email protected]’, bcc:’[email protected]’}

No imagem abaixo, você pode ver que há um campo CC com um segundo endereço de e-mail:

Adicionando estilos ao seu modelo de e-mail

Você pode adicionar estilos aos seus e-mails da mesma forma que você adicionaria estilos a um arquivo HTML. No bloco em seu arquivo email.handlebars, crie um bloco de estilo onde você pode adicionar todos os seus estilos desejados:

Eu adicionei um cabeçalho ao meu e-mail que aparece em uma cor cinza claro. Utilizarei este campo para enviar uma mensagem personalizada, conforme a imagem abaixo:

Conclusão

Agora, você tem todas as ferramentas de que precisa para obter começou a criar e enviar e-mails com Nodemailer e Node.js.

O Nodemailer é uma excelente ferramenta que facilita o envio de e-mails de um aplicativo com segurança. Neste tutorial, aprendemos como fazer nosso próprio modelo de email no Nodemailer, adicionar anexos e adicionar estilo personalizado. Você pode seguir este processo a qualquer momento que precisar se comunicar com os usuários do seu aplicativo.