使用Node-Red和Nylas API发送和阅读电子邮件
#node #apis #iot

如果您是我们Devrel博客的常规读者,您可能会知道我们已经发布了几个博客,以使用nylas SDK来发送和阅读电子邮件,以获取PythonRubyNodeJSNodeJSJava的语言。我们还谈到了使用PHPC#, and Rust

今天,我们将学习如何使用基于nodejs的低代码编程环境Node-Red发送和阅读电子邮件,该环境主要用于IoT方案。

安装节点红色

我们可以使用npm通过在终端窗口中键入以下内容来安装节点红色:

$ sudo npm install -g --unsafe-perm node-red

如果您在窗户上,请不要使用sudo。

一旦安装,我们就可以从终端称呼它:

$ node-red

Running Node-Red

它将在以下地址运行编辑器:

http://127.0.0.1:1880/

节点红色环境

作为一个视觉环境,我们可以简单地将元素拖放到画布中,然后通过电线连接它们:

Node-Red example

安装节点

在Node-Red中,我们可以安装其他节点,这将帮助我们更轻松。

我们将安装sysmessage,这是一个可以让我们以简单简单的方式创建通知的节点。

首先,我们需要按右侧的菜单按钮:

Deploy Nodes

然后选择管理调色板

Manage Palette

然后,在安装选项卡上,在搜索框上键入 sysm (启动自动完成),然后单击 install :

sysmessage package

安装后,我们的画布上的左侧将出现一个新节点:

sysmessage installed

发送电子邮件

现在,我们准备发送电子邮件。

首先,我们将选择一个注入节点并将其拖动到画布中:

Inject node

双击双击,我们可以访问其属性。我们要删除 msg.topic 消息:

define msg.topic

我们需要选择 timestamp 并将其更改为 json

JSON payload

然后,选择三个点来展开编辑器:

Expands JSON editor

并粘贴以下JSON代码:

{
   "subject": "Hello from Node-Red",
   "to": [
       {
           "email": "devrel@nylas.com",
           "name": "Nylas' DevRel Team"
       }
   ],
   "body": "This email was sent using Node-Red and the Nylas APIs."
}

现在,我们将拖动HTTP请求节点:

http request node

在这里,我们需要将方法更改为,并通过尼拉斯发送端点,该端点是 https://api.nylas.com/send 。然后,我们需要在上打勾使用身份验证,然后选择承载身份验证并传递我们的访问令牌。最后,我们需要添加几个标题,接受 content-type

Configure http request

一旦完成,我们需要拖动并添加 sysmessage 节点并将其配置为这样。在这种情况下,选择警报类型,OSX警报,并添加适当的标题。留下其余的。

Configure Sysmessage

将所有节点与电线连接起来,因此看起来像这样:

Send email layout

或,您可以简单地复制并粘贴以下JSON code

粘贴JSON代码并按导入

JSON Email Send Code

我们应该所有节点准备粘贴。完成后,我们可以按部署按钮,该按钮位于菜单按钮旁边。

Deploy nodes

部署后,我们只需要按注入注释即可发送电子邮件并获取通知消息。

Click inject send email

另外,我们将从调用Nylas API中获得JSON响应。

Send email response

以最少的努力,没有代码,我们使用Node-Red和Nylas Apis发送了一封电子邮件。

阅读电子邮件

发送电子邮件很简单,几乎简单,但是阅读电子邮件有些复杂。不用担心,会很有趣。

首先,我们将在节点中创建HTTP。

http in node

并像这样配置:

该方法是 get url 将包括/:limit ,这将是我们要获取多少电子邮件和<强>名称实际上是可选的。

define GetEmails with limit

我们还可以在节点中添加额外的http并获取URL,但没有 /:限制,因为这将帮助我们定义默认页面。< /p>

define GetEmails without limit

我们将添加一个更改节点。这将使我们能够从之前读取 /:限制参数。< /p>

change node

名称是可选的,但是集合和值非常重要。我们得到参数值并将其分配给有效载荷。

change payload

此参数将是一个字符串,但是我们需要一个整数。因此,我们需要添加一个函数节点并键入以下内容:

Function node

if (msg.payload == null){
   msg.payload = "5";
}
msg.payload = Number(msg.payload);
return msg;

此代码将简单地检查我们是否通过:limit 参数,如果我们不这样做,请通过 5 作为极限,然后将转换字符串参数整数参数。

To number function

下一步将是添加 HTTP请求节点。它将与发送电子邮件发送相同,但URL将为

https://api.nylas.com/messages?in=inbox&limit={{{payload}}}


返回将是解析的JSON对象而不是 utf-8字符串

Define read email as JSON

在URL上,

**https://api.nylas.com/messages?in=inbox&limit={{{payload}}}**


in = inbox 部分意味着我们仅阅读来自收件箱的邮件,

**limit={{{payload}}}**


意味着我们要获取的电子邮件数量与我们用作参数的数字相同。

我们将收回一系列电子邮件,我们需要一个一个访问它们,因此我们的最佳选择是使用 split node:

split node to split the array of emails

此节点将在电子邮件数组中获取每个项目。我们要做的是更改日期字段的格式,因为目前显示为 epoch (自1970年1月1日以来的秒数),我们希望一些更可读的东西。最好的事情是,我们不需要修改该节点的任何属性;我们可以在它来的时候使用它。

这是函数的代码:

msg.payload.date = new Date(msg.payload.date * 1000).toLocaleString();
return msg;

Change the format

一旦我们修复了日期,就该再次使元素再次成为数组,为此,我们需要使用 join node,它们的方式与拆分,无需进行任何进一步的修改即可使用。

Join node

阵列准备就绪并返回到位后,我们需要显示电子邮件中的信息,为此,我们可以使用模板节点。该节点使用mustache系统,这是用于创建动态内容的无逻辑模板引擎。换句话说,它通过使用被代码替换的标签生成HTML代码。

Template node to display emails inbox

这是我们需要使用的代码:

<html>
   <head>
       <script src="https://cdn.tailwindcss.com"></script>
   </head>
<body>
<h1 class="font-black" style="text-align:center">Inbox</h2>
<table class="table-auto">
   <tr>
       <th>Subject</th>
       <th>From (Name)</th>
       <th>From (Email)</th>
       <th>Date</th>
       <th>Snippet</th>
   </tr>
   {{#payload}}
   <tr>
   <td>
   {{subject}}
   </td>
   <td>
   {{from.0.name}}
   </td>
   <td>
   {{from.0.email}}
   </td>   
   <td>
   {{date}}
   </td>   
   <td>
   {{snippet}}
   </td>
   </tr>
   {{/payload}}
</table> 
</body>
</html>

这将简单地创建一个表格,循环阵列的每个记录,然后打印出发件人,日期和摘要的主题,名称和电子邮件(电子邮件预览)。

Define payload template

最后一块是HTTP响应节点,它将允许我们在Web浏览器上看到模板。

http response node

我们不需要更改此节点上的任何内容。

我们单击部署,我们可以开始测试。

我们的画布应该看起来像这样:

Read emails layout

当然,我们可以导入以下JSON code

在我们选择的浏览器上,我们需要导航到:

http://localhost:1880/GetEmails

,我们将在收件箱中收到前五封电子邮件:

Read first five emails

我们也可以传递参数,所以这样称呼:

http://localhost:1880/GetEmails/1

这只会获取一封电子邮件。

Read just one image

我们可以选择一到一百的任何数字(如当前的提取限制)。

Read three emails

就是这样。希望你喜欢这个。使用Node-Red和Nylas API发送和读取电子邮件既快速又简单。

如果您想与Nylas了解有关电子邮件管理的更多信息,请访问我们的文档页面Email API Overview

观看Coding with Nylas episode 18 - Send and Read emails using Node-Red