Reach

Grow

Manage

Automate

Reach

Grow

Manage

Automate

使用 SparkPost 与 Node.js 的指南

电子邮件

1 min read

使用 SparkPost 与 Node.js 的指南

电子邮件

1 min read

使用 SparkPost 与 Node.js 的指南

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

Node.js 简介

作为SparkPost的开发者倡导者,我编写了许多示例应用程序。我的背景主要是前端开发,因此我最强的语言是JavaScript。多亏了Node.js,我也是一名不错的后端开发人员。这是否意味着我现在是一个全栈开发人员了?无论如何,对我来说,拥有一个出色的SparkPost客户端库对Node.js来说是很重要的。所以,我立即投入进去,并成为了一名贡献者(甚至在我被聘用之前)。

请让我帮助您在您的Node.js项目中开始使用SparkPost发送电子邮件。

安装 & 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 库,可以让发送电子邮件“简单如蛋糕”。对于选择使用此库的用户,我们创建了一个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 Key。将其直接放入代码中仍然不是一个好习惯。

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 发送 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)

它真的很容易使用,我建议查看其他功能。

没有错误的方式去 Node

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

加入我们的Newsletter。

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

加入我们的Newsletter。

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

加入我们的Newsletter。

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

让我们为您联系Bird专家。
在30分钟内见证Bird的全部威力。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

Newsletter

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

让我们为您联系Bird专家。
在30分钟内见证Bird的全部威力。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

Newsletter

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

让我们为您联系Bird专家。
在30分钟内见证Bird的全部威力。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

R

Reach

G

Grow

M

Manage

A

Automate

Newsletter

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。