Um Guia para Usar o SparkPost com Node.js
Pássaro
1 de set. de 2017
1 min read

Principais Conclusões
A SparkPost oferece várias maneiras de enviar e-mails a partir do Node.js — chamadas de API diretas, transporte Nodemailer e entrega multicanal notif.me.
Armazene as chaves da API em variáveis de ambiente, nunca as codifique diretamente. O SparkPost detecta automaticamente
SPARKPOST_API_KEY.A API de Transmissões oferece flexibilidade poderosa: templates, dados de substituição, anexos e rotulagem de campanhas.
Usuários do Nodemailer podem mudar instantaneamente para o SparkPost com o transporte oficial — sem grandes reescritas de código.
O notif.me fornece entrega multicanal (e-mail, SMS, push) com estratégias de fallback, tornando-o ideal para sistemas de notificação robustos.
O Node.js se encaixa naturalmente com modernas APIs de e-mail em nuvem e fluxos de trabalho serverless, facilitando a incorporação de recursos de e-mail diretamente em seu aplicativo.
Destaques de Perguntas e Respostas
Qual é a maneira mais rápida de começar a enviar e-mails com o SparkPost em Node.js?
Instale o pacote
sparkpost, inicialize o cliente com uma chave de API (preferencialmente através de variáveis de ambiente) e chame o métodotransmissions.send()com os destinatários + conteúdo.Eu preciso armazenar minha chave de API do SparkPost no código?
Não — e você não deveria. Use variáveis de ambiente. O cliente lê automaticamente
SPARKPOST_API_KEY.Posso enviar e-mails usando modelos em vez de HTML embutido?
Sim. A API de Transmissões suporta templates armazenados, dados de substituição, listas de destinatários, anexos, cc/bcc e mais.
E se eu já usar o Nodemailer?
Você está coberto - SparkPost vem com um transporte oficial do Nodemailer. Basta configurá-lo com sua chave de API e usar o Nodemailer como de costume.
O SparkPost pode trabalhar com sistemas de mensagens multicanal?
Sim. Bibliotecas como
notifme-sdkpermitem e-mail, SMS, push e webpush com lógica de fallback, e incluem um provedor SparkPost.O Node.js é adequado para fluxos de trabalho de email sem servidor?
Absolutamente. Ele combina bem com Cloud Functions, Lambdas e qualquer ambiente serverless usando a API da SparkPost para e-mails acionados por eventos.
Quem deve usar a API de Transmissões em vez do Nodemailer ou do notif.me?
Use Transmissions API quando você deseja controle total e desempenho.
Use Nodemailer se seu projeto já o utiliza e você deseja uma integração rápida.
Use notif.me para mensagens multicanais ou estratégias de entrega de fallback.
Qual é a melhor prática ao enviar e-mails a partir do Node?
Trate sua chave da API como sensível — apenas variáveis de ambiente, nunca a inclua no código.
Introdução ao Node.js
Como um Developer Advocate para o SparkPost, escrevo muitos aplicativos de amostra. Meu histórico é principalmente em desenvolvimento front-end, portanto minha linguagem mais forte é JavaScript. Graças ao Node.js, também sou um desenvolvedor backend razoável. Falando de aplicativos de amostra, o Node.js também funciona muito bem para construir funções serverless que se integram com Flow Builder - como nosso guia de integração do Google Cloud Functions e Vision API. Isso significa que agora sou um desenvolvedor full stack? De qualquer forma, era importante para mim que tivéssemos uma ótima biblioteca cliente do SparkPost para Node.js. Então, mergulhei de cabeça e me tornei um colaborador (mesmo antes de ser contratado).
Permita-me ajudá-lo a começar a enviar e-mails com SparkPost em seu projeto Node.js. Antes de mergulhar nas especificidades do Node.js, você pode querer entender os fundamentos das APIs de e-mail em infraestrutura de nuvem e como elas se encaixam no desenvolvimento moderno de aplicações.
Como um Developer Advocate para o SparkPost, escrevo muitos aplicativos de amostra. Meu histórico é principalmente em desenvolvimento front-end, portanto minha linguagem mais forte é JavaScript. Graças ao Node.js, também sou um desenvolvedor backend razoável. Falando de aplicativos de amostra, o Node.js também funciona muito bem para construir funções serverless que se integram com Flow Builder - como nosso guia de integração do Google Cloud Functions e Vision API. Isso significa que agora sou um desenvolvedor full stack? De qualquer forma, era importante para mim que tivéssemos uma ótima biblioteca cliente do SparkPost para Node.js. Então, mergulhei de cabeça e me tornei um colaborador (mesmo antes de ser contratado).
Permita-me ajudá-lo a começar a enviar e-mails com SparkPost em seu projeto Node.js. Antes de mergulhar nas especificidades do Node.js, você pode querer entender os fundamentos das APIs de e-mail em infraestrutura de nuvem e como elas se encaixam no desenvolvimento moderno de aplicações.
Como um Developer Advocate para o SparkPost, escrevo muitos aplicativos de amostra. Meu histórico é principalmente em desenvolvimento front-end, portanto minha linguagem mais forte é JavaScript. Graças ao Node.js, também sou um desenvolvedor backend razoável. Falando de aplicativos de amostra, o Node.js também funciona muito bem para construir funções serverless que se integram com Flow Builder - como nosso guia de integração do Google Cloud Functions e Vision API. Isso significa que agora sou um desenvolvedor full stack? De qualquer forma, era importante para mim que tivéssemos uma ótima biblioteca cliente do SparkPost para Node.js. Então, mergulhei de cabeça e me tornei um colaborador (mesmo antes de ser contratado).
Permita-me ajudá-lo a começar a enviar e-mails com SparkPost em seu projeto Node.js. Antes de mergulhar nas especificidades do Node.js, você pode querer entender os fundamentos das APIs de e-mail em infraestrutura de nuvem e como elas se encaixam no desenvolvimento moderno de aplicações.
Instalação e Configuração
Vou assumir que você já tem Node.js instalado. Como seguimos o cronograma de Suporte de Longo Prazo (LTS) do Node.js, você precisará estar executando a versão 4 ou superior. Você pode ver qual versão está executando usando o comando `node –version` na janela do terminal.
Vamos criar um novo projeto npm. Se você já tiver um, pode pular esta parte.
> mkdir sparkpost-test > cd sparkpost-test > npm init --yes
Isso criará um novo projeto e aceitará todas as configurações padrão. Você também pode executar `npm init` e responder a todos os prompts.
Agora podemos instalar node-sparkpost:
> npm install sparkpost --save
Uma vez instalado, você pode importar e criar uma instância da classe SparkPost:
const SparkPost = require('sparkpost') const client = new SparkPost('SUA CHAVE DE API')
É uma boa prática evitar colocar sua chave de API no código. Recomendamos fortemente armazená-la fora do seu código, então configuramos a biblioteca do cliente para detectar a variável de ambiente SPARKPOST_API_KEY .
Vou assumir que você já tem Node.js instalado. Como seguimos o cronograma de Suporte de Longo Prazo (LTS) do Node.js, você precisará estar executando a versão 4 ou superior. Você pode ver qual versão está executando usando o comando `node –version` na janela do terminal.
Vamos criar um novo projeto npm. Se você já tiver um, pode pular esta parte.
> mkdir sparkpost-test > cd sparkpost-test > npm init --yes
Isso criará um novo projeto e aceitará todas as configurações padrão. Você também pode executar `npm init` e responder a todos os prompts.
Agora podemos instalar node-sparkpost:
> npm install sparkpost --save
Uma vez instalado, você pode importar e criar uma instância da classe SparkPost:
const SparkPost = require('sparkpost') const client = new SparkPost('SUA CHAVE DE API')
É uma boa prática evitar colocar sua chave de API no código. Recomendamos fortemente armazená-la fora do seu código, então configuramos a biblioteca do cliente para detectar a variável de ambiente SPARKPOST_API_KEY .
Vou assumir que você já tem Node.js instalado. Como seguimos o cronograma de Suporte de Longo Prazo (LTS) do Node.js, você precisará estar executando a versão 4 ou superior. Você pode ver qual versão está executando usando o comando `node –version` na janela do terminal.
Vamos criar um novo projeto npm. Se você já tiver um, pode pular esta parte.
> mkdir sparkpost-test > cd sparkpost-test > npm init --yes
Isso criará um novo projeto e aceitará todas as configurações padrão. Você também pode executar `npm init` e responder a todos os prompts.
Agora podemos instalar node-sparkpost:
> npm install sparkpost --save
Uma vez instalado, você pode importar e criar uma instância da classe SparkPost:
const SparkPost = require('sparkpost') const client = new SparkPost('SUA CHAVE DE API')
É uma boa prática evitar colocar sua chave de API no código. Recomendamos fortemente armazená-la fora do seu código, então configuramos a biblioteca do cliente para detectar a variável de ambiente SPARKPOST_API_KEY .
Enviando Email
Agora que você tem uma instância do SparkPost, está pronto para enviar. Existem várias opções disponíveis para envio, mas vamos começar com um exemplo simples. Veja como você envia um email para um único destinatário, especificando conteúdo inline:
client.transmissions.send({ content: { from: 'test@your-sending-domain.com', subject: 'Hello from node-sparkpost', html: '<p>Hello world</p>' }, recipients: [ { address: 'someone@somedomain.com' } ] }) .then(data => { console.log('Woohoo! You just sent your first mailing!') console.log(data) }) .catch(err => { console.log('Whoops! Something went wrong') console.log(err) })
Nota: Este exemplo usa Promises, mas não se preocupe. Nós também suportamos funções de callback.
Para aplicações empresariais que requerem gerenciamento completo de email, os desenvolvedores também podem precisar considerar construir sistemas de arquivamento de emails para lidar com requisitos de armazenamento e conformidade.
Existem mais opções disponíveis com transmissões, incluindo especificar templates armazenados ou listas de destinatários, cc e bcc, adicionar anexos, especificar uma campanha, usar dados de substituição e muito mais. Confira os exemplos, documentos para o recurso Transmissions e a documentação da API Transmissions para mais informações.
Agora que você tem uma instância do SparkPost, está pronto para enviar. Existem várias opções disponíveis para envio, mas vamos começar com um exemplo simples. Veja como você envia um email para um único destinatário, especificando conteúdo inline:
client.transmissions.send({ content: { from: 'test@your-sending-domain.com', subject: 'Hello from node-sparkpost', html: '<p>Hello world</p>' }, recipients: [ { address: 'someone@somedomain.com' } ] }) .then(data => { console.log('Woohoo! You just sent your first mailing!') console.log(data) }) .catch(err => { console.log('Whoops! Something went wrong') console.log(err) })
Nota: Este exemplo usa Promises, mas não se preocupe. Nós também suportamos funções de callback.
Para aplicações empresariais que requerem gerenciamento completo de email, os desenvolvedores também podem precisar considerar construir sistemas de arquivamento de emails para lidar com requisitos de armazenamento e conformidade.
Existem mais opções disponíveis com transmissões, incluindo especificar templates armazenados ou listas de destinatários, cc e bcc, adicionar anexos, especificar uma campanha, usar dados de substituição e muito mais. Confira os exemplos, documentos para o recurso Transmissions e a documentação da API Transmissions para mais informações.
Agora que você tem uma instância do SparkPost, está pronto para enviar. Existem várias opções disponíveis para envio, mas vamos começar com um exemplo simples. Veja como você envia um email para um único destinatário, especificando conteúdo inline:
client.transmissions.send({ content: { from: 'test@your-sending-domain.com', subject: 'Hello from node-sparkpost', html: '<p>Hello world</p>' }, recipients: [ { address: 'someone@somedomain.com' } ] }) .then(data => { console.log('Woohoo! You just sent your first mailing!') console.log(data) }) .catch(err => { console.log('Whoops! Something went wrong') console.log(err) })
Nota: Este exemplo usa Promises, mas não se preocupe. Nós também suportamos funções de callback.
Para aplicações empresariais que requerem gerenciamento completo de email, os desenvolvedores também podem precisar considerar construir sistemas de arquivamento de emails para lidar com requisitos de armazenamento e conformidade.
Existem mais opções disponíveis com transmissões, incluindo especificar templates armazenados ou listas de destinatários, cc e bcc, adicionar anexos, especificar uma campanha, usar dados de substituição e muito mais. Confira os exemplos, documentos para o recurso Transmissions e a documentação da API Transmissions para mais informações.
Bônus: Enviar Email com Nodemailer
Nodemailer é uma biblioteca popular para Node.js que torna o envio de e-mail "fácil como bolo". Para aqueles de vocês que escolherem usar esta biblioteca, criamos um transporte SparkPost para Nodemailer. Você precisará instalar os pacotes nodemailer e nodemailer-sparkpost-transport em seu projeto.
> npm install nodemailer nodemailer-sparkpost-transport --save
Agora você pode criar uma instância de transporte nodemailer:
const nodemailer = require('nodemailer') const sparkPostTransport = require('nodemailer-sparkpost-transport') const transporter = nodemailer.createTransport(sparkPostTransport({ 'sparkPostApiKey': process.env.SPARKPOST_API_KEY }))
Perceba como estou lendo a chave da API a partir de uma variável de ambiente. Ainda é uma boa prática nunca colocar isso diretamente em seu código.
Existem várias opções que podem ser passadas ao transporte SparkPost, como id da campanha e se a mensagem é transacional ou não. Dê uma olhada no README.md para todas as opções.
Veja como você enviaria a mesma mensagem acima usando Nodemailer:
transporter.sendMail( { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hello from nodemailer-sparkpost-transport', html: '<p>Hello world</p>' }, (err, info) => { if (err) { console.error(err); } else { console.log(info); } } );
Nodemailer é uma biblioteca popular para Node.js que torna o envio de e-mail "fácil como bolo". Para aqueles de vocês que escolherem usar esta biblioteca, criamos um transporte SparkPost para Nodemailer. Você precisará instalar os pacotes nodemailer e nodemailer-sparkpost-transport em seu projeto.
> npm install nodemailer nodemailer-sparkpost-transport --save
Agora você pode criar uma instância de transporte nodemailer:
const nodemailer = require('nodemailer') const sparkPostTransport = require('nodemailer-sparkpost-transport') const transporter = nodemailer.createTransport(sparkPostTransport({ 'sparkPostApiKey': process.env.SPARKPOST_API_KEY }))
Perceba como estou lendo a chave da API a partir de uma variável de ambiente. Ainda é uma boa prática nunca colocar isso diretamente em seu código.
Existem várias opções que podem ser passadas ao transporte SparkPost, como id da campanha e se a mensagem é transacional ou não. Dê uma olhada no README.md para todas as opções.
Veja como você enviaria a mesma mensagem acima usando Nodemailer:
transporter.sendMail( { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hello from nodemailer-sparkpost-transport', html: '<p>Hello world</p>' }, (err, info) => { if (err) { console.error(err); } else { console.log(info); } } );
Nodemailer é uma biblioteca popular para Node.js que torna o envio de e-mail "fácil como bolo". Para aqueles de vocês que escolherem usar esta biblioteca, criamos um transporte SparkPost para Nodemailer. Você precisará instalar os pacotes nodemailer e nodemailer-sparkpost-transport em seu projeto.
> npm install nodemailer nodemailer-sparkpost-transport --save
Agora você pode criar uma instância de transporte nodemailer:
const nodemailer = require('nodemailer') const sparkPostTransport = require('nodemailer-sparkpost-transport') const transporter = nodemailer.createTransport(sparkPostTransport({ 'sparkPostApiKey': process.env.SPARKPOST_API_KEY }))
Perceba como estou lendo a chave da API a partir de uma variável de ambiente. Ainda é uma boa prática nunca colocar isso diretamente em seu código.
Existem várias opções que podem ser passadas ao transporte SparkPost, como id da campanha e se a mensagem é transacional ou não. Dê uma olhada no README.md para todas as opções.
Veja como você enviaria a mesma mensagem acima usando Nodemailer:
transporter.sendMail( { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hello from nodemailer-sparkpost-transport', html: '<p>Hello world</p>' }, (err, info) => { if (err) { console.error(err); } else { console.log(info); } } );
Bônus Duplo: Enviando Email com notif.me
Todos nós sabemos que o e-mail é o rei da comunicação, mas às vezes você quer alcançar as pessoas por meio de vários canais. notif.me é uma biblioteca Node.js para enviar todo tipo de mensagens transacionais. Se você quer enviar um e-mail, sms, push ou webpushes, pode fazer isso com facilidade. Ela também possui estratégias integradas de fallback e round robin para vários provedores. Recentemente trabalhamos com os criadores para construir um provedor SparkPost. Você precisará instalar o pacote `notifme-sdk` em seu projeto.
> npm install notifme-sdk --save
Agora você pode criar uma instância do notifme com o provedor SparkPost:
const NotifmeSdk = require('notifme-sdk').default; const notifmeSdk = new NotifmeSdk({ channels: { email: { providers: [ { type: 'sparkpost', apiKey: process.env.SPARKPOST_API_KEY } ] } } });
Novamente, estamos puxando a chave API de uma variável de ambiente. Dizemos isso três vezes — é tão importante. 🙂
Agora vamos repetir este mesmo exemplo, desta vez usando o notif.me:
notifmeSdk.send({ email: { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hello from the SparkPost notif.me provider', html: '<p>Hello world</p>' } }) .then(console.log) .catch(console.error);
É realmente fácil de usar e eu recomendo que você consulte as outras funcionalidades.
Comparação de Opções de Envio de E-mail em Node.js
Método | Pacotes Necessários | Manipulação da Chave API | Melhor para | Notas |
|---|---|---|---|---|
API SparkPost (node-sparkpost) | sparkpost | Usa a variável de ambiente | Controle direto da API, acesso total aos recursos de Transmissões | Mais flexível; suporta templates, dados de substituição, anexos, campanhas |
Nodemailer + SparkPost Transport | nodemailer, nodemailer-sparkpost-transport | Usa variável de ambiente na configuração do transporte | Desenvolvedores que já estão usando Nodemailer | Caminho de migração mais fácil; mudanças de código mínimas |
notif.me + Provedor SparkPost | notifme-sdk | Usa variável de ambiente na configuração do provedor | Mensagens multicanal (e-mail, SMS, push) | Inclui estratégias de fallback + round-robin entre provedores |
Todos nós sabemos que o e-mail é o rei da comunicação, mas às vezes você quer alcançar as pessoas por meio de vários canais. notif.me é uma biblioteca Node.js para enviar todo tipo de mensagens transacionais. Se você quer enviar um e-mail, sms, push ou webpushes, pode fazer isso com facilidade. Ela também possui estratégias integradas de fallback e round robin para vários provedores. Recentemente trabalhamos com os criadores para construir um provedor SparkPost. Você precisará instalar o pacote `notifme-sdk` em seu projeto.
> npm install notifme-sdk --save
Agora você pode criar uma instância do notifme com o provedor SparkPost:
const NotifmeSdk = require('notifme-sdk').default; const notifmeSdk = new NotifmeSdk({ channels: { email: { providers: [ { type: 'sparkpost', apiKey: process.env.SPARKPOST_API_KEY } ] } } });
Novamente, estamos puxando a chave API de uma variável de ambiente. Dizemos isso três vezes — é tão importante. 🙂
Agora vamos repetir este mesmo exemplo, desta vez usando o notif.me:
notifmeSdk.send({ email: { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hello from the SparkPost notif.me provider', html: '<p>Hello world</p>' } }) .then(console.log) .catch(console.error);
É realmente fácil de usar e eu recomendo que você consulte as outras funcionalidades.
Comparação de Opções de Envio de E-mail em Node.js
Método | Pacotes Necessários | Manipulação da Chave API | Melhor para | Notas |
|---|---|---|---|---|
API SparkPost (node-sparkpost) | sparkpost | Usa a variável de ambiente | Controle direto da API, acesso total aos recursos de Transmissões | Mais flexível; suporta templates, dados de substituição, anexos, campanhas |
Nodemailer + SparkPost Transport | nodemailer, nodemailer-sparkpost-transport | Usa variável de ambiente na configuração do transporte | Desenvolvedores que já estão usando Nodemailer | Caminho de migração mais fácil; mudanças de código mínimas |
notif.me + Provedor SparkPost | notifme-sdk | Usa variável de ambiente na configuração do provedor | Mensagens multicanal (e-mail, SMS, push) | Inclui estratégias de fallback + round-robin entre provedores |
Todos nós sabemos que o e-mail é o rei da comunicação, mas às vezes você quer alcançar as pessoas por meio de vários canais. notif.me é uma biblioteca Node.js para enviar todo tipo de mensagens transacionais. Se você quer enviar um e-mail, sms, push ou webpushes, pode fazer isso com facilidade. Ela também possui estratégias integradas de fallback e round robin para vários provedores. Recentemente trabalhamos com os criadores para construir um provedor SparkPost. Você precisará instalar o pacote `notifme-sdk` em seu projeto.
> npm install notifme-sdk --save
Agora você pode criar uma instância do notifme com o provedor SparkPost:
const NotifmeSdk = require('notifme-sdk').default; const notifmeSdk = new NotifmeSdk({ channels: { email: { providers: [ { type: 'sparkpost', apiKey: process.env.SPARKPOST_API_KEY } ] } } });
Novamente, estamos puxando a chave API de uma variável de ambiente. Dizemos isso três vezes — é tão importante. 🙂
Agora vamos repetir este mesmo exemplo, desta vez usando o notif.me:
notifmeSdk.send({ email: { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hello from the SparkPost notif.me provider', html: '<p>Hello world</p>' } }) .then(console.log) .catch(console.error);
É realmente fácil de usar e eu recomendo que você consulte as outras funcionalidades.
Comparação de Opções de Envio de E-mail em Node.js
Método | Pacotes Necessários | Manipulação da Chave API | Melhor para | Notas |
|---|---|---|---|---|
API SparkPost (node-sparkpost) | sparkpost | Usa a variável de ambiente | Controle direto da API, acesso total aos recursos de Transmissões | Mais flexível; suporta templates, dados de substituição, anexos, campanhas |
Nodemailer + SparkPost Transport | nodemailer, nodemailer-sparkpost-transport | Usa variável de ambiente na configuração do transporte | Desenvolvedores que já estão usando Nodemailer | Caminho de migração mais fácil; mudanças de código mínimas |
notif.me + Provedor SparkPost | notifme-sdk | Usa variável de ambiente na configuração do provedor | Mensagens multicanal (e-mail, SMS, push) | Inclui estratégias de fallback + round-robin entre provedores |
Não há jeito errado de usar o Node
Quando se trata de enviar emails usando Node.js, você tem muitas opções. Trabalhamos duro para tornar isso o mais indolor possível.
Quando se trata de enviar emails usando Node.js, você tem muitas opções. Trabalhamos duro para tornar isso o mais indolor possível.
Quando se trata de enviar emails usando Node.js, você tem muitas opções. Trabalhamos duro para tornar isso o mais indolor possível.



