Pensando como melhorar algumas plataformas que tenho online encontrei o Sendgrid dentro do nosso velho amigo Heroku.
A Sendgrid é uma plataforma de envio de emails transacionais e de marketing.
Abaixo vão dois links explicando melhor os detalhes:
- Site oficial
- Link para o add-on dentro do heroku(recomendo vir por aqui)
Agora já conhecendo melhor a plataforma, vamos configurar tudo para criar nossos emails transacionais.
O primeiro passo é provisionar o add-on do Sendgrid dentro do Heroku.
Com o add-on configurado essa é o dashboard da plataforma.
Dentro do dashboard precisamos realizar duas configurações básicas são:
-
1 - Criar uma api key no dashboard
Settings > API KEY -
2 - Configurar a api key como variável no heroku
Após as configurações básicas precisamos criar e testar um template ainda pelo dashboard
- Menu de templates
Aqui basta criar o template como preferir, usando a interface de arrasta e solta ou usando HTML
Após criar o template precisamos testar e pra isso na própria plataforma temos um sandbox para enviar o email.
Ao enviar o email via sandbox, podemos conferir a caixa de entrada do email escolhido para receber o teste.
Podemos perceber que a variável user ainda está sem preenchimento. Vamos agora criar o backend para enviar o email de forma transacional.
NodeJs
Para exemplificar o uso da plataforma criei um projeto e estou mantendo no meu github.
Ou você pode ‘deployar’ direto no heroku clicando abaixo
A base do código é o que busquei na doc oficial do Sendgrid para nodejs.
Import e configuração da API KEY que criamos anteriormente.
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_APIKEY);
Código base utilizando o template que criamos enviando todos os parametros no request.
app.post("/sendmail/template", function(req, res){
const {to, from, template_data} = req.body;
const msg = {
to: to,
from: from,
templateId: 'd-ee4c43022cc74cec802e5398cb54a31f',
dynamic_template_data: template_data,
};
sgMail.send(msg)
.then((success)=>{
res.status(200).send({success: "Email enviado com sucesso"});
}).catch(err=>res.status(400).send({error:"Algo de errado não está certo no envio de emails."}));
});
Com todo código configurado e rodando localmente vamos aos testes via postman.
Após o teste, podemos perceber que o parametro de usuário foi preenchido de acordo com o request via postman.
Dai pra frente, precisamos criar um template customizado para cada caso e transacionar como preferir. =D