var restify = require('restify'); var path=require("path") var ip_addr = '127.0.0.1'; var port = '8900'; var maxLength=5*1024 *1024; //最大请求 var server = restify.createServer({ name : "sendmail" }); var fs=require("fs"); const { getTaskReportInfoAsync,getTaskReportInfoWeekAsync } = require('./mail/task'); var plugins=restify.plugins; server.use(plugins.acceptParser(server.acceptable)); server.use(plugins.queryParser()); server.use(plugins.bodyParser({ maxBodySize:maxLength })); server.listen(port ,ip_addr, function(){ console.log('%s listening at %s ', server.name , server.url); }); var PATH="/mail"; function responseOK(res,result,data,info){ return res.send({result:result,message:info,data:data}); } server.post({path : PATH+"/sendattach" , version: '0.0.1'} ,sendMailAttach); async function sendMailAttach(req, res , next){ res.setHeader('Access-Control-Allow-Origin','*'); var query = req.body; if(!query){ return responseOK(res,false,null,"参数有误,请输入正确的参数 0") } if(req.getContentLength()>=maxLength){ return responseOK(res,false,null,"附件内容大小,超过了5M") } console.log(query); var account=query.account; var receivename=query.receivename; //接收人名称 var toemail=query.toemail; var title=query.title; var content=query.content; if(!account ||!toemail ||!title ||!content || !receivename){ return responseOK(res,false,null,"参数有误,请输入正确的参数 -1") } if(account!="rushmail"){ return responseOK(res,false,null,"参数有误,请输入正确的参数 -2") } var attachment=[] console.log(req.files) if(req.files){ var keys=Object.keys(req.files); for(var key of keys){ var sourceStr=req.files[key].path; var destStr=path.join("./temp/",key); fs.copyFileSync(sourceStr,destStr); attachment.push(destStr); } } if(attachment.length>0){ var {sendWidthAttachmentAsync} = require("./sendmail"); var ret=await sendWidthAttachmentAsync(receivename,toemail,title,content,attachment) .then((e)=>{return {status:true,data:e}}) .catch((e)=>{return {status:false,data:e}}) //发附件 if(ret.status){ for(var att of attachment){ fs.unlinkSync(att); } return responseOK(res,true,{taskid:ret.data},"发送成功") }else{ return responseOK(res,true,null,"发送失败"+ret.data); } }else{ var {sendAsync} = require("./sendmail"); var ret=await sendAsync(receivename,toemail,title,content) .then((e)=>{return {status:true,data:e}}) .catch((e)=>{return {status:false,data:e}}) if(ret.status){ return responseOK(res,true,{taskid:ret.data},"发送成功") }else{ return responseOK(res,true,null,"发送失败"+ret.data) } } } server.post({path : PATH+"/send" , version: '0.0.1'} ,sendMail); async function sendMail(req, res , next){ res.setHeader('Access-Control-Allow-Origin','*'); var query = req.body; if(!query){ return responseOK(res,false,null,"参数有误,请输入正确的参数 0") } var account=query.account; var receivename=query.receivename; //接收人名称 var toemail=query.toemail; var title=query.title; var content=query.content; if(!account ||!toemail ||!title ||!content || !receivename){ return responseOK(res,false,null,"参数有误,请输入正确的参数 -1") } if(account!="rushmail"){ return responseOK(res,false,null,"参数有误,请输入正确的参数 -2") } var attachment=query.attachment; if(attachment){ if(attachment instanceof Array){ for(var att of attachment){ if(!fs.existsSync(att)){ // console.log("attachments") return responseOK(res,false,null,"附件不存在!"+att); } } }else{ if(!fs.existsSync(attachment)){ return responseOK(res,false,null,"附件不存在!"); } } var {sendWidthAttachmentAsync} = require("./sendmail"); var ret=await sendWidthAttachmentAsync(receivename,toemail,title,content,attachment) .then((e)=>{return {status:true,data:e}}) .catch((e)=>{return {status:false,data:e}}) //发附件 if(ret.status){ return responseOK(res,true,{taskid:ret.data},"发送成功") }else{ return responseOK(res,true,null,"发送失败"+ret.data); } }else{ var {sendAsync} = require("./sendmail"); var ret=await sendAsync(receivename,toemail,title,content) .then((e)=>{return {status:true,data:e}}) .catch((e)=>{return {status:false,data:e}}) if(ret.status){ return responseOK(res,true,{taskid:ret.data},"发送成功") }else{ return responseOK(res,true,null,"发送失败"+ret.data) } } } server.post({path : PATH+"/report" , version: '0.0.1'} ,searchReport); async function searchReport(req, res , next){ res.setHeader('Access-Control-Allow-Origin','*'); var query = req.body; if(!query){ return responseOK(res,false,null,"参数有误,请输入正确的参数 0") } // console.log(req.body) var date=query.date; var account=query.account; if(account!="rushmail"){ return responseOK(res,false,null,"参数有误,请输入正确的参数 -4") } if(!date){ return responseOK(res,false,null,"参数有误,请输入正确的参数 -5") } var ret=await getTaskReportInfoAsync(date) .then((e)=>{return {status:true,data:e}}) .catch((e)=>{return {status:false,data:e}}) if(ret.status) return responseOK(res,true,ret.data,"获取报告成功"); else return responseOK(res,false,null,"获取报告失败"+ret.data); } server.post({path : PATH+"/reportweek" , version: '0.0.1'} ,searchReportWeek); async function searchReportWeek(req, res , next){ res.setHeader('Access-Control-Allow-Origin','*'); var query = req.body; if(!query){ return responseOK(res,false,null,"参数有误,请输入正确的参数 0") } // console.log(req.body) var account=query.account; if(account!="rushmail"){ return responseOK(res,false,null,"参数有误,请输入正确的参数 -4") } //一周内的 var date=new Date(); var ret=await getTaskReportInfoWeekAsync(date) .then((e)=>{return {status:true,data:e}}) .catch((e)=>{return {status:false,data:e}}) if(ret.status) return responseOK(res,true,ret.data,"获取报告成功"); else return responseOK(res,false,null,"获取报告失败"+ret.data); }