UNPKG

kpiplus

Version:

KPI+

1 lines 1.97 kB
var nodemailer=require("nodemailer"),systemConfig=require("../configs"),mailAccount=require("../models/mailaccount"),smtpTransport=require("nodemailer-smtp-transport"),async=require("async"),underscore=require("underscore"),path=require("path"),fs=require("fs");const SMTPServer=require("smtp-server").SMTPServer;var wellknown=require("nodemailer-wellknown");exports.mailServer=function(e,n){let r=new SMTPServer({name:n,onAuth:(e,n,r)=>{if("sys"!==e.username||"NguoiTinhTramNam"!==e.password)return r(new Error("Invalid username or password"));r(null,{user:"sys"})},onData(e,n,r){e.pipe(process.stdout),e.on("end",r)}});r.on("error",e=>{console.log("Mail server error",e)}),r.listen(e,n,()=>{console.log("Mail server start at",n)})},exports.getAccount=function(e,n){mailAccount.findOne({_id:e}).lean().exec(function(r,t){return r?n(r):t?void n(null,t):n("Don't find account "+e)})},exports.sendHtml=function(e,n){var r,t;if(e.account){var s,a,o=e.account.smtp.host.split(".");if(o.length>1){var c=o[1];a=wellknown(c)}a||(a={host:e.account.smtp.host,port:e.account.smtp.port}),a.auth={user:e.account.username,pass:e.account.password},s=smtpTransport(a),r=nodemailer.createTransport(s),t={name:e.account.fullname,address:e.account.username}}else r=nodemailer.createTransport(smtpTransport(systemConfig.sender)),t={name:systemConfig.sender.name,address:systemConfig.sender.auth.user},e.sender&&(t.name=e.sender);let i=[];e.attachments||(e.attachments=[]),async.map(e.attachments,(e,n)=>{let r=e.file.name,t=__dirname;t=path.dirname(t),r=path.join(t,"uploads",r),i.push({path:r,filename:e.file.originalname}),n()},(s,a)=>{underscore.isObject(e.to)?r.sendMail({from:t,to:e.to,cc:e.cc,bcc:e.bcc,subject:e.subject,html:e.html,attachments:i},function(e,r){n(e,r)}):underscore.isArray(e.to)&&async.map(e.to,function(n,s){n.address?r.sendMail({from:t,to:n,cc:e.cc,bcc:e.bcc,subject:e.subject,html:e.html,attachments:i},function(e,n){s(e,n)}):s(null)},function(e,r){n(e,r)})})};