Reach

Grow

Manage

Automate

Reach

Grow

Manage

Automate

使用 SparkPost 与 Node.js 的指南

2017年9月1日

电子邮件

1 min read

使用 SparkPost 与 Node.js 的指南

2017年9月1日

电子邮件

1 min read

使用 SparkPost 与 Node.js 的指南

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

Node.js 简介

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

让我帮助您在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传输实例:

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发送电子邮件时,你有很多选择。我们已经尽力让它尽可能简单。

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

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

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

Newsletter

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

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

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

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

Newsletter

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

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

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

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

R

Reach

G

Grow

M

Manage

A

Automate

Newsletter

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