搭建简易的物联网服务端和客户端-邮件通知(十九)
时间:2022-07-23
本文章向大家介绍搭建简易的物联网服务端和客户端-邮件通知(十九),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
实现对于一些指定数据超过预期的时候,会发送邮件报警 代码地址:https://github.com/klren0312/stm32_wifi 2017.4.29
邮件通知
1.nodejs邮件模块
(1)emailjs模块 send emails, html and attachments (files, streams and strings) from node.js to any smtp server (2)github网址 https://github.com/eleith/emailjs (3)安装
npm install emailjs --save
2.邮件发送
定时使用前面说过的node-schedule模块
(1)引入相关模块
var email = require("emailjs");//发送邮件模块
var mysql = require('mysql');//mysql模块
var schedule = require('node-schedule');//定时模块
(2)配置数据库
//数据库配置
var conn = mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'nodemysql',
port:3306
})
//连接数据库
conn.connect();
(3)发送邮箱的配置
//配置邮箱
var server = email.server.connect({
user: "xxx@xxx.com",//邮箱用户名
password:"xxxxxx",//密码
host:"smtp服务器的地址",//查看使用的邮箱的smtp服务器地址
ssl:true
});
(4)定时发送
//每分钟第十秒的时候检测
var rule = new schedule.RecurrenceRule();
rule.second = 10;//定义为每分钟第十秒
var j = schedule.scheduleJob(rule,function(){
//数据库查询
conn.query('SELECT * FROM pet',function(err,rows,fields){
//例如获取温度的值,存入tem
var tem = rows[rows.length-1].tem;
//定义邮件内容
var temmsg = {
text:"tempreture is " + tem + ",please be careful",//邮件内容
from: "15755022403@139.com",//发送方
to:"605747907@qq.com",//接收方
subject:"PetHose tem"
};
//判断如果温度大于或等于30度,就发送邮件通知
if(tem>=30){
//邮件发送
server.send(temmsg,function(err,message){
console.log(err || "ok");
});
}
});
});
3.结果
(1)当温度大于或等于三十度的时候,发送邮件
接收到的报警邮件
@治电小白菜20170429
- React Native网络请求
- ViewPager轻松完成TabHost效果
- 教你一招 | Python: 函数参数魔法
- 连续多行输入--C++ 中字符串标准输入的学习及实验(续篇)
- 教你一招 | 用Python实现简易可拓展的规则引擎
- 经典算法学习之动态规划
- C++ 隐式类型转换
- IE漏洞调试之CVE-2013-3893
- C++ STL之迭代器注意事项
- 设计3D标签为什么要有一个字符间隙tracking?为什么要重写getPrefferedSize()?画三遍的顺序有讲究
- C++STL之整理算法
- Offset2lib攻击测试:看我如何全面绕过64位Linux的内核防护
- C++ STL之查找算法
- 教你一招 | Python3新特性(一) :字符串
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JVM学习 : VM_Thread
- Python数据科学:神经网络
- 火箭五年四遇勇士,终究还是败了。
- 谁才是权游的真正主角。
- Java8 Stream流的终端操作
- Python 爬取王者农药全套皮肤
- 时间都去哪儿了--python性能优化
- Python干货 | 遥感影像拼接
- Java8 Stream 创建流
- Java8 Stream 基本类型特化流
- Java8 Stream 自定义收集器Collector
- 收藏|Flink比Spark好在哪?
- SpringCloud Config 分布式配置
- 经过一年的煎熬,我们还是决定把系统升级成基于 Spring Cloud 的微服务架构
- OpenCV:人脸检测。