使用 SparkPost 与 Node.js 的指南
鸟
2017年9月1日
电子邮件
1 min read

关键要点
SparkPost 提供多种方式从 Node.js 发送电子邮件——直接 API 调用、Nodemailer 传输和 notif.me 多渠道投递。
将 API 密钥存储在环境变量中,切勿硬编码它们。SparkPost 会自动检测
SPARKPOST_API_KEY。The Transmissions API 为您提供强大的灵活性:模板、替代数据、附件和活动标记。
Nodemailer 用户可以通过官方传输立即切换到 SparkPost——无需进行重大代码重写。
notif.me 提供多渠道投递(电子邮件、短信、推送)以及回退策略,非常适合强大的通知系统。
Node.js 自然适用于现代云电子邮件 API 和无服务器工作流,使得直接在您的应用程序中嵌入电子邮件功能变得容易。
Q&A 精华
使用 SparkPost 在 Node.js 中开始发送电子邮件的最快方式是什么?
安装
sparkpost包,用API密钥(最好通过环境变量)初始化客户端,并调用transmissions.send()方法与收件人和内容一起。我需要在代码中存储我的 SparkPost API key 吗?
不——你不应该这样做。使用环境变量。客户端会自动读取
SPARKPOST_API_KEY。我可以使用模板而不是内嵌HTML发送邮件吗?
是的。Transmissions API 支持存储的模板、替代数据、收件人列表、附件、抄送/密送等。
如果我已经在使用 Nodemailer 怎么办?
您已涵盖 — SparkPost 附带官方 Nodemailer 传输。只需使用您的 API 密钥进行配置,然后照常使用 Nodemailer。
SparkPost可以与多渠道消息系统协作吗?
是的。像
notifme-sdk这样的库允许电子邮件、短信、推送和网络推送与后备逻辑,并且它们包括一个 SparkPost 提供商。Node.js适合用于无服务器电子邮件工作流程吗?
完全可以。它与 Cloud Functions、Lambdas 以及任何使用 SparkPost 的 API 进行事件驱动电子邮件的无服务器环境都能很好搭配。
谁应该使用 Transmissions API 而不是 Nodemailer 或 notif.me?
当您想要完全控制和性能时,使用Transmissions API。
如果您的项目已使用它,并且您想要快速集成,请使用Nodemailer。
对于多渠道消息传递或备用交付策略,请使用notif.me。
从 Node 发送电子邮件时的最大最佳实践是什么?
将您的 API 密钥视为敏感信息——仅限在环境变量中使用,切勿将其提交到代码中。
Intro to Node.js
作为SparkPost的开发者倡导者,我编写了许多示例应用程序。我的背景主要是前端开发,因此我最擅长的语言是JavaScript。感谢Node.js,我也是一个不错的后端开发者。谈到示例应用程序,Node.js也很适合构建与Flow Builder集成的无服务器函数 - 就像我们的Google Cloud Functions和Vision API集成指南。这是否意味着我现在是全栈开发者了?无论如何,对我来说,拥有一个出色的Node.js的SparkPost客户端库非常重要。因此,我立刻投入,并成为了一名贡献者(甚至在我被聘用之前)。
让我帮你在Node.js项目上开始使用SparkPost发送电子邮件。在探讨Node.js具体细节之前,您可能想了解云基础设施中的电子邮件API基础以及它们如何融入现代应用开发。
作为SparkPost的开发者倡导者,我编写了许多示例应用程序。我的背景主要是前端开发,因此我最擅长的语言是JavaScript。感谢Node.js,我也是一个不错的后端开发者。谈到示例应用程序,Node.js也很适合构建与Flow Builder集成的无服务器函数 - 就像我们的Google Cloud Functions和Vision API集成指南。这是否意味着我现在是全栈开发者了?无论如何,对我来说,拥有一个出色的Node.js的SparkPost客户端库非常重要。因此,我立刻投入,并成为了一名贡献者(甚至在我被聘用之前)。
让我帮你在Node.js项目上开始使用SparkPost发送电子邮件。在探讨Node.js具体细节之前,您可能想了解云基础设施中的电子邮件API基础以及它们如何融入现代应用开发。
作为SparkPost的开发者倡导者,我编写了许多示例应用程序。我的背景主要是前端开发,因此我最擅长的语言是JavaScript。感谢Node.js,我也是一个不错的后端开发者。谈到示例应用程序,Node.js也很适合构建与Flow Builder集成的无服务器函数 - 就像我们的Google Cloud Functions和Vision API集成指南。这是否意味着我现在是全栈开发者了?无论如何,对我来说,拥有一个出色的Node.js的SparkPost客户端库非常重要。因此,我立刻投入,并成为了一名贡献者(甚至在我被聘用之前)。
让我帮你在Node.js项目上开始使用SparkPost发送电子邮件。在探讨Node.js具体细节之前,您可能想了解云基础设施中的电子邮件API基础以及它们如何融入现代应用开发。
安装 & 设置
我假设您已经安装了 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('YOUR API KEY')
避免将您的 API 密钥放入代码中是一个好的做法。我们强烈建议将其存储在代码之外,因此我们设置客户端库以检测SPARKPOST_API_KEY环境变量。
我假设您已经安装了 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('YOUR API KEY')
避免将您的 API 密钥放入代码中是一个好的做法。我们强烈建议将其存储在代码之外,因此我们设置客户端库以检测SPARKPOST_API_KEY环境变量。
我假设您已经安装了 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('YOUR API KEY')
避免将您的 API 密钥放入代码中是一个好的做法。我们强烈建议将其存储在代码之外,因此我们设置客户端库以检测SPARKPOST_API_KEY环境变量。
发送 Email
现在您有了一个 SparkPost 实例,您已经准备好发送邮件了。发送有很多选项,但让我们从一个简单的例子开始。以下是如何向单个收件人发送电子邮件并指定内嵌内容的方法:
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) })
注意:这个例子使用了 Promises,但不用担心。我们也支持回调函数。
对于需要全面邮件管理的企业应用程序,开发人员可能还需要考虑构建邮件归档系统以处理存储和合规性要求。
Transmissions 还有更多可用选项,包括指定存储模板或收件人列表、抄送和密件抄送、添加附件、指定活动、使用替换数据等。查看示例、Transmissions 资源文档和Transmissions API 文档以获取更多信息。
现在您有了一个 SparkPost 实例,您已经准备好发送邮件了。发送有很多选项,但让我们从一个简单的例子开始。以下是如何向单个收件人发送电子邮件并指定内嵌内容的方法:
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) })
注意:这个例子使用了 Promises,但不用担心。我们也支持回调函数。
对于需要全面邮件管理的企业应用程序,开发人员可能还需要考虑构建邮件归档系统以处理存储和合规性要求。
Transmissions 还有更多可用选项,包括指定存储模板或收件人列表、抄送和密件抄送、添加附件、指定活动、使用替换数据等。查看示例、Transmissions 资源文档和Transmissions API 文档以获取更多信息。
现在您有了一个 SparkPost 实例,您已经准备好发送邮件了。发送有很多选项,但让我们从一个简单的例子开始。以下是如何向单个收件人发送电子邮件并指定内嵌内容的方法:
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) })
注意:这个例子使用了 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: 'Hello from nodemailer-sparkpost-transport', html: '<p>Hello world</p>' }, (err, info) => { if (err) { console.error(err); } else { console.log(info); } } );
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: 'Hello from nodemailer-sparkpost-transport', html: '<p>Hello world</p>' }, (err, info) => { if (err) { console.error(err); } else { console.log(info); } } );
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: 'Hello from 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 库。无论你想发送电子邮件、短信、推送或 webpushes,你都可以轻松完成。它还为多个供应商内置了回退和轮询策略。我们最近与创作者合作构建了一个 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 Key。我们已经说过三次了——这很重要。🙂
现在让我们重复这个相同的例子,这次使用 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);
它真的很容易使用,我推荐查看 其他功能。
在 Node.js 中发送电子邮件选项的比较
方法 | 所需包 | API Key 处理 | 最佳用途 | 备注 |
|---|---|---|---|---|
SparkPost API (node-sparkpost) | sparkpost | 使用 | 直接 API 控制,完全访问 Transmissions 功能 | 最灵活;支持模板、替代数据、附件、活动 |
Nodemailer + SparkPost Transport | nodemailer, nodemailer-sparkpost-transport | 在传输配置中使用环境变量 | 已经使用 Nodemailer 的开发者 | 最简单的迁移路径;最少的代码更改 |
notif.me + SparkPost 提供者 | notifme-sdk | 在提供者配置中使用环境变量 | 多渠道消息传递(电子邮件,短信,推送) | 包括跨供应商的回退 + 轮询策略 |
我们都知道,电子邮件是沟通之王,但有时你希望能够通过多种渠道联系到人。notif.me 是一个用于发送各种事务消息的 Node.js 库。无论你想发送电子邮件、短信、推送或 webpushes,你都可以轻松完成。它还为多个供应商内置了回退和轮询策略。我们最近与创作者合作构建了一个 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 Key。我们已经说过三次了——这很重要。🙂
现在让我们重复这个相同的例子,这次使用 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);
它真的很容易使用,我推荐查看 其他功能。
在 Node.js 中发送电子邮件选项的比较
方法 | 所需包 | API Key 处理 | 最佳用途 | 备注 |
|---|---|---|---|---|
SparkPost API (node-sparkpost) | sparkpost | 使用 | 直接 API 控制,完全访问 Transmissions 功能 | 最灵活;支持模板、替代数据、附件、活动 |
Nodemailer + SparkPost Transport | nodemailer, nodemailer-sparkpost-transport | 在传输配置中使用环境变量 | 已经使用 Nodemailer 的开发者 | 最简单的迁移路径;最少的代码更改 |
notif.me + SparkPost 提供者 | notifme-sdk | 在提供者配置中使用环境变量 | 多渠道消息传递(电子邮件,短信,推送) | 包括跨供应商的回退 + 轮询策略 |
我们都知道,电子邮件是沟通之王,但有时你希望能够通过多种渠道联系到人。notif.me 是一个用于发送各种事务消息的 Node.js 库。无论你想发送电子邮件、短信、推送或 webpushes,你都可以轻松完成。它还为多个供应商内置了回退和轮询策略。我们最近与创作者合作构建了一个 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 Key。我们已经说过三次了——这很重要。🙂
现在让我们重复这个相同的例子,这次使用 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);
它真的很容易使用,我推荐查看 其他功能。
在 Node.js 中发送电子邮件选项的比较
方法 | 所需包 | API Key 处理 | 最佳用途 | 备注 |
|---|---|---|---|---|
SparkPost API (node-sparkpost) | sparkpost | 使用 | 直接 API 控制,完全访问 Transmissions 功能 | 最灵活;支持模板、替代数据、附件、活动 |
Nodemailer + SparkPost Transport | nodemailer, nodemailer-sparkpost-transport | 在传输配置中使用环境变量 | 已经使用 Nodemailer 的开发者 | 最简单的迁移路径;最少的代码更改 |
notif.me + SparkPost 提供者 | notifme-sdk | 在提供者配置中使用环境变量 | 多渠道消息传递(电子邮件,短信,推送) | 包括跨供应商的回退 + 轮询策略 |
Node 的使用没有错误的方法
关于使用Node.js发送电子邮件,您有很多选择。我们一直努力帮助使其尽可能简单。
关于使用Node.js发送电子邮件,您有很多选择。我们一直努力帮助使其尽可能简单。
关于使用Node.js发送电子邮件,您有很多选择。我们一直努力帮助使其尽可能简单。



