node-red教程 8.2 node-red收发邮件(基于QQ邮箱)

8.2 node-red收发邮件-基于QQ邮箱

  在一台联网的设备上,node-red可以使用邮箱控件来收发邮件。网上有很多教程都是基于外国的邮箱,这里介绍一个基于QQ邮箱的案例。

8.2.1 邮箱控件简介

  输入邮箱控件
  从IMAP服务器收到一封电子邮件,如果邮件未读,则重复的作为一个msg转发。
  主题可以被载入msg.payload,msg.payload是纯文本。text与HTML可以作为msg.html返回。如果你需要的话,msg.from与msg.date也可以被设置。
  此外,msg.header包含完整的头对象,包括to,cc和其它可能有用的属性。
  邮箱控件使用imap模块。
  注意,节点只从收件箱获取最近的单个邮件,所以要适当地设置轮询时间。
  注意,使用IAMP和SSL端口993。

  在收到的电子邮件中提供的任何附件都可以在msg.attachments属性中找到。这将是一组对象,其中每个对象表示一个特定的附件。对象的格式是:

{
  contentType:        // The MIME content description
  fileName:           // A suggested file name associated with this attachment
  transferEncoding:   // How was the original email attachment encodded?
  contentDisposition: // Unknown
  generatedFileName:  // A suggested file name associated with this attachment
  contentId:          // A unique generated ID for this attachment
  checksum:           // A checksum against the data
  length:             // Size of data in bytes
  content:            // The actual content of the data contained in a Node.js Buffer object
                      // We can turn this into a base64 data string with content.toString('base64')
}

  对于POP3来说,默认的端口号,普通TCP是110,对于SSL是995。对于IAMP来说,普通TCP的端口号是143,SSL是993。
  最大刷新间隔为2147483秒(24.8天)。

  输出邮箱控件
  把msg.payload作为邮件内容,把msg.topic作为邮件主题。
  默认的消息接收者可以在节点中配置,如果它是空白的,那么应该使用msg.to来设置它。对传入消息的属性,如果留下空白,你也可以指定msg.cc或msg.bcc属性。
  你可以选择在payload中设置msg.from,这会覆盖userid的默认值。
  载荷可以是html格式。
  如果有效负载是二进制缓冲区,那么它将被转换为附件。应该使用msg.filename来设置文件名。    msg.description可以添加到正文文本中。
  Msg.attachment可以包含多个附件。
  注意,使用SMTP的SSL端口465。

8.2.2 使用node-red发送邮件

  使用SSL的通用配置如下:
  接收邮件服务器:pop.qq.com,使用SSL,端口号995
  发送邮件服务器:smtp.qq.com,使用SSL,端口号465或587
  账户名:您的QQ邮箱账户名(如果您是VIP帐号或Foxmail帐号,账户名需要填写完整的邮件地址)
  密码:您的QQ邮箱密码
  电子邮件地址:您的QQ邮箱的完整邮件地址
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第1张图片
  使用node-red与qq邮箱发送/接收邮件
  首先QQ邮箱要设置IMAP/SMTP服务
  点击设置,账户
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第2张图片
  需要保证IMAP/SMTP服务这一项是开启的
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第3张图片
  成功开启后,会给一个授权码,需要记住。如果忘记授权码,可以再次生成。
  使用node-red给邮箱发送邮件
  然后在node-red里边拖3个节点
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第4张图片
  编辑inject节点。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第5张图片
  配置邮箱节点。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第6张图片
  完成以后部署,然后点击inject的小抽屉
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第7张图片
  然后调试窗口可以看到信息。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第8张图片

  而收件箱也可以看到这封邮件。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第9张图片
  邮件也具备抄送和秘密抄送功能,需要修改msg,因此要增加一个函数节点。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第10张图片
  邮件的设置。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第11张图片
  然后inject与email节点的to信息要清除。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第12张图片
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第13张图片
  部署,然后点击inject的小抽屉,两个邮箱就都可以收到邮件了。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第14张图片

8.2.3 使用node-red接收邮件

  如下图连接数据流
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第15张图片
email的配置
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第16张图片
  完成以后部署node-red。
  使用其他的邮箱给收件箱发送一个邮件。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第17张图片
   在调试窗口就可以看到这个邮件了。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第18张图片

8.3 使用邮箱远程控制node-red

  接下来使用我的公司邮箱给QQ邮箱发送请开灯,再用node-red来读取开灯的信息,并发送给串口(假设串口有执行设备)。
  流程如下:
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第19张图片
  邮箱输入
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第20张图片
  邮箱内容判断
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第21张图片
  串口输出
  使用/n截断数据
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第22张图片
  串口输入略
  串口转邮件的内容,如果收到OK,那么回复灯打开了
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第23张图片
  发送给邮件
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第24张图片
  现象:
  给node-red的收件箱发送邮件
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第25张图片
  node-red收到消息并发送给串口。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第26张图片
  串口控制设备完成操作,并回复on OK\n
  node-red收到串口回复,判断数据并发送邮件。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第27张图片
  邮箱收到命令的响应。
node-red教程 8.2 node-red收发邮件(基于QQ邮箱)_第28张图片

你可能感兴趣的:(node-red)