转变思路-->发短信-->发钉邮
此处用到了邮箱SMTP和nodemailer,QQ邮箱的SMTP发送频率有限制,短期大批量发送会被冻结,因此做了延时,10秒发一封,规避限制
send(){
console.log("邮件推送开始")
var result = []
var z = []
var y = ''
var index = 0
var a=setInterval(function () {
const element = array2[index]
need = element.need
pname = element.name
phNum = element.phNum
var i = ''
var p = need.length
for (let i = 0; i < p; i++) {
const e = need[i];
db.collection(" ").where({
county:{
$regex:'.*'+e+'.*',//模糊查询
$options:'1'
}
}).get({
success:res=>{
result = [res.data[0].county+"今日:"+res.data[0].weather+",气温:"+res.data[0].temday+"度。"+"\r\n"]
z.push(result)
y = z.join("")
} ,fail:res=>{
clearInterval(a)
}
})
}
setTimeout(function () {
wx.cloud.callFunction({
name:'send',
data:{
touser:phNum+'@dingtalk.com',
text:y
},
success:res=>{
console.log("已发送给"+pname+","+index+"人")
},fail:res=>{
console.log(pname+"发送失败"+res)
}
})
index++
y = ''
z = []
result = []
},7000)//7秒发一次+云函数延迟1秒
if(index>=49)
{ clearInterval(a) }
},10000)//结构体10秒循环一次
},
nodemailer的使用:
const cloud = require('wx-server-sdk')
cloud.init()
//引入发送邮件的类库
var nodemailer = require('nodemailer')
// 创建一个SMTP客户端配置
var config = {
host: 'smtp.qq.com',
port: 465,
auth: {
user: '邮箱账号',
pass: '邮箱的授权码'
}
};
var transporter = nodemailer.createTransport(config);
// 云函数入口函数
exports.main = async(event, context) => {
var got = event.touser
var text = event.text
var mail = {
// 发件人
from: "your mail adress",
subject: "今日天气",
to: got,
text: text
};
let res = await transporter.sendMail(mail);
return res;
}