Node.js 简介
作为 SparkPost 的开发者倡导者,我编写了很多示例应用程序。我的背景主要是前端开发,因此我最擅长的语言是 JavaScript。多亏了 Node.js,我现在也是一名不错的后端开发者。这意味着我现在是一个全栈开发者吗?无论如何,我认为我们需要一个出色的 SparkPost 客户端库来支持 Node.js,所以我直接参与其中,成为了一名贡献者 (甚至在我被雇用之前).
允许我帮助您开始在您的 Node.js 项目中使用 SparkPost 发送电子邮件。
安装与设置
我假设您已经 安装了 Node.js。因为我们遵循 Node.js 长期支持 (LTS) 计划,所以您需要运行版本 4 或更高。您可以在终端窗口中使用 `node –version` 命令查看您正在运行的版本。
让我们创建一个新的 npm 项目。如果您已经有一个,可以跳过这一部分。
> mkdir sparkpost-test > cd sparkpost-test > npm init --yes
这将创建一个新项目并接受所有默认选项。您也可以选择运行 `npm init` 并回答所有提示。
现在我们可以安装 node-sparkpost:
> npm install sparkpost --save
安装后,您可以导入并创建 SparkPost 类的实例:
const SparkPost = require('sparkpost') const client = new SparkPost('您的 API 密钥')
避免将 API 密钥放入代码是一种良好实践。我们强烈建议将其存储在代码之外,因此我们设置了客户端库以检测 SPARKPOST_API_KEY 环境变量。
发送电子邮件
现在您已经有了 SparkPost 实例,准备发送邮件。发送有很多选项可供选择,但让我们从一个简单的示例开始。以下是如何向单个收件人发送电子邮件并指定内联内容:
client.transmissions.send({ content: { from: 'test@your-sending-domain.com', subject: '来自 node-sparkpost 的问候', html: '<p>Hello world</p>' }, recipients: [ {address: 'someone@somedomain.com'} ] }) .then(data => { console.log('哇哦!您刚刚发送了第一封邮件!') console.log(data) }) .catch(err => { console.log('哎呀!出错了') console.log(err) })
注意:这个例子使用了 Promises,但别担心。我们也 支持回调函数.
使用 transmissions 还有更多选项,包括指定存储的模板或收件人列表、抄送和密送、添加附件、指定活动、使用替换数据等。查看 示例、Transmissions 资源的文档和 Transmissions API 文档以获取更多信息。
额外奖励:使用 Nodemailer 发送电子邮件
Nodemailer 是一个流行的 Node.js 库,使发送邮件 “轻而易举”。对于选择使用此库的您,我们创建了 用于 Nodemailer 的 SparkPost 传输。您需要在项目中安装 nodemailer 和 nodemailer-sparkpost-transport 包。
> npm install nodemailer nodemailer-sparkpost-transport --save
现在您可以创建一个 nodemailer 传输实例:
const nodemailer = require('nodemailer') const sparkPostTransport = require('nodemailer-sparkpost-transport') const transporter = nodemailer.createTransport(sparkPostTransport({ 'sparkPostApiKey': process.env.SPARKPOST_API_KEY }))
请注意我如何从环境变量中读取 API 密钥。将其直接放入代码中仍然是一种最佳实践。
可以传递给 SparkPost 传输的选项有很多,例如活动 ID 和信息是否为交易信息。请查看 README.md 以获取所有选项。
以下是如何使用 Nodemailer 发送上述相同消息:
transporter.sendMail({ from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: '来自 nodemailer-sparkpost-transport 的问候', html: '<p>Hello world</p>' }, (err, info) => { if (err) { console.error(err); } else { console.log(info); } })
双重奖励:使用 notif.me 发送电子邮件
我们都知道电子邮件是沟通的王者,但有时您希望能够通过多种渠道与人联系。 notif.me 是一个 Node.js 库,用于发送各种事务性消息。无论您希望发送电子邮件、短信、推送消息还是网页推送,您都可以轻松做到。它还具有多供应商的内置故障和轮换策略。我们最近与创作者合作构建了 SparkPost 提供者。您需要在项目中安装 `notifme-sdk` 包。
> npm install notifme-sdk --save
现在您可以使用 SparkPost 提供者创建 notifme 实例:
const NotifmeSdk = require('notifme-sdk').default const notifmeSdk = new NotifmeSdk({ channels: { email: { providers: [{ type: 'sparkpost', apiKey: process.env.SPARKPOST_API_KEY, }] } } })
再次提醒,我们从环境变量中提取 API 密钥。我们已经说了三次 — 这很重要。🙂
现在让我们重复这个示例,这次使用 notif.me:
notifmeSdk.send({ email: { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: '来自 SparkPost notif.me 提供者的问候', html: '<p>Hello world</p>' } }).then(console.log)
使用起来非常简单,我建议查看 其他功能。
在 Node.js 中没有错误的方式
在使用 Node.js 发送电子邮件时,您有许多选择。我们努力使其尽可能无痛。