使用 SparkPost 与 Node.js 的指南

2017年9月1日

电子邮件

1 min read

使用 SparkPost 与 Node.js 的指南

关键要点

    • 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 密钥视为敏感信息——仅限在环境变量中使用,切勿将其提交到代码中。

作为 SparkPost 的开发者倡导者,我编写了许多示例应用程序。我的背景主要是前端开发,因此我最擅长的语言是 JavaScript。多亏了 Node.js,我的后端开发能力也还不错。这是否意味着我现在是全栈开发者?

Node.js 简介

作为 SparkPost 的开发者倡导者,我编写了许多示例应用程序。我的背景主要是前端开发,所以我最强的语言是 JavaScript。感谢 Node.js,我也成为了一名不错的后端开发人员。说到示例应用程序,Node.js 也非常适合构建与 Flow Builder 集成的无服务器功能 - 就像我们的 Google Cloud Functions 和 Vision API 集成指南。这是否意味着我现在是全栈开发人员了?无论如何,对我而言,拥有一个优秀的 Node.js 的 SparkPost 客户端库非常重要。因此,我迅速参与并成为了一名贡献者(甚至在我被雇用之前)。

请让我帮助您在您的 Node.js 项目上开始使用 SparkPost 发送电子邮件。在深入了解 Node.js 的细节之前,您可能想了解 云基础设施中的电子邮件 API 基础知识 以及它们如何融入现代应用程序开发。

安装 & Setup

我假设您已经安装了 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 API 文档了解更多信息。

奖励:使用 Nodemailer 发送电子邮件

Nodemailer 是一个流行的Node.js库,使发送电子邮件“轻而易举。” 对于选择使用这个库的用户,我们创建了一个SparkPost transport for Nodemailer。您需要在项目中安装nodemailer和nodemailer-sparkpost-transport软件包。

> npm install nodemailer nodemailer-sparkpost-transport --save

现在您可以创建一个nodemailer transport实例:

const nodemailer = require('nodemailer') 
const sparkPostTransport = require('nodemailer-sparkpost-transport') 
const transporter = nodemailer.createTransport(sparkPostTransport({ 
  'sparkPostApiKey': process.env.SPARKPOST_API_KEY 
}))

请注意我如何从环境变量中读取API Key。最好始终不要直接在代码中放置它。

有几个选项可以传递给SparkPost transport,比如campaign 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 发送 Email

我们都知道电子邮件是沟通之王,但有时您希望能够通过多种渠道与人联系。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 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

当涉及使用Node.js发送电子邮件时,你有很多选择。我们已经尽力让它尽可能简单。

其他新闻

阅读更多来自此类别的内容

A person is standing at a desk while typing on a laptop.

完整的AI原生平台,可与您的业务一起扩展。

© 2025 Bird

A person is standing at a desk while typing on a laptop.

完整的AI原生平台,可与您的业务一起扩展。

© 2025 Bird