Introducción a Node.js
Como Desarrollador Defensor de SparkPost, escribo muchas aplicaciones de muestra. Mi experiencia es principalmente en desarrollo front-end, por lo tanto, mi lenguaje más fuerte es JavaScript. Gracias a Node.js, también soy un desarrollador backend decente. ¿Significa esto que ahora soy un desarrollador de pila completa? De todos modos, era importante para mí que tuviéramos una increíble biblioteca cliente de SparkPost para Node.js. Así que me sumergí y me convertí en un colaborador (incluso antes de ser contratado).
Permíteme ayudarte a empezar a enviar correos electrónicos con SparkPost en tu proyecto de Node.js.
Instalación y configuración
Voy a asumir que ya tienes Node.js instalado. Como seguimos el programa de Soporte a Largo Plazo (LTS) de Node.js, necesitarás estar ejecutando la versión 4 o superior. Puedes ver qué versión estás utilizando con el comando `node –version` en tu ventana de terminal.
Vamos a crear un nuevo proyecto npm. Si ya tienes uno, puedes omitir esta parte.
> mkdir sparkpost-test > cd sparkpost-test > npm init --yes
Esto creará un nuevo proyecto y aceptará todas las opciones predeterminadas. También puedes ejecutar `npm init` y responder todas las preguntas.
Ahora podemos instalar node-sparkpost:
> npm install sparkpost --save
Una vez instalado, puedes importar y crear una instancia de la clase SparkPost:
const SparkPost = require('sparkpost') const client = new SparkPost('TU CLAVE API')
Es buena práctica evitar poner tu clave API en el código. Te recomendamos encarecidamente almacenarla fuera de tu código, por lo que configuramos la biblioteca cliente para detectar la variable de entorno SPARKPOST_API_KEY .
Envío de correos electrónicos
Ahora que tienes una instancia de SparkPost, estás listo para enviar. Hay varias opciones disponibles para enviar, pero comencemos con un ejemplo sencillo. Así es como envías un correo electrónico a un solo destinatario, especificando contenido en línea:
client.transmissions.send({ content: { from: 'test@your-sending-domain.com', subject: 'Hola desde node-sparkpost', html: '<p>Hola mundo</p>' }, recipients: [ {address: 'someone@somedomain.com'} ] }) .then(data => { console.log('¡Woohoo! ¡Acabas de enviar tu primer correo!') console.log(data) }) .catch(err => { console.log('¡Ups! Algo salió mal') console.log(err) })
Nota: Este ejemplo utiliza Promesas, pero no te preocupes. También soportamos funciones de devolución de llamada.
Hay más opciones disponibles con las transmisiones, incluyendo la especificación de plantillas almacenadas o listas de destinatarios, cc y bcc, agregar adjuntos, especificar una campaña, usar datos de sustitución y mucho más. Consulta los ejemplos, documentos para el recurso Transmissions, y la documentación de la API de Transmissions para más información.
Bonificación: Envío de correos electrónicos con Nodemailer
Nodemailer es una biblioteca popular para Node.js que hace que enviar correos electrónicos sea “fácil como un pastel”. Para aquellos de ustedes que elijan usar esta biblioteca, hemos creado un transporte de SparkPost para Nodemailer. Necesitarás instalar los paquetes nodemailer y nodemailer-sparkpost-transport en tu proyecto.
> npm install nodemailer nodemailer-sparkpost-transport --save
Ahora puedes crear una instancia de transporte de nodemailer:
const nodemailer = require('nodemailer') const sparkPostTransport = require('nodemailer-sparkpost-transport') const transporter = nodemailer.createTransport(sparkPostTransport({ 'sparkPostApiKey': process.env.SPARKPOST_API_KEY }))
Observa cómo leo la clave API desde una variable de entorno. Sigue siendo una buena práctica no poner eso directamente en tu código.
Hay varias opciones que se pueden pasar al transporte de SparkPost, como el id de la campaña y si el mensaje es transaccional o no. Echa un vistazo al README.md para todas las opciones.
Aquí tienes cómo enviarías el mismo mensaje anterior usando Nodemailer:
transporter.sendMail({ from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hola desde nodemailer-sparkpost-transport', html: '<p>Hola mundo</p>' }, (err, info) => { if (err) { console.error(err); } else { console.log(info); } })
Doble bonificación: Envío de correos electrónicos con notif.me
Todos sabemos que el correo electrónico es el rey de la comunicación, pero a veces quieres poder llegar a las personas a través de múltiples canales. notif.me es una biblioteca de Node.js para enviar todo tipo de mensajes transaccionales. Ya sea que quieras enviar un correo electrónico, sms, push o webpushes, puedes hacerlo con facilidad. También tiene estrategias de caída y ronda incorporadas para múltiples proveedores. Recientemente trabajamos con los creadores para construir un proveedor de SparkPost. Necesitarás instalar el paquete `notifme-sdk` en tu proyecto.
> npm install notifme-sdk --save
Ahora puedes crear una instancia de notifme con el proveedor de SparkPost:
const NotifmeSdk = require('notifme-sdk').default const notifmeSdk = new NotifmeSdk({ channels: { email: { providers: [{ type: 'sparkpost', apiKey: process.env.SPARKPOST_API_KEY, }] } } })
De nuevo, estamos obteniendo la clave API de una variable de entorno. Lo hemos dicho tres veces: es muy importante. 🙂
Ahora repitamos este mismo ejemplo, esta vez usando notif.me:
notifmeSdk.send({ email: { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hola desde el proveedor SparkPost de notif.me', html: '<p>Hola mundo</p>' } }).then(console.log)
Es realmente fácil de usar y recomiendo revisar las otras características.
No hay una manera incorrecta de usar Node
Cuando se trata de enviar correos electrónicos usando Node.js, tienes muchas opciones. Hemos trabajado duro para ayudar a que sea lo menos doloroso posible.