const tools = require('./tools/general'); require('./config/config'); const Email = require('email-templates'); var i18n = require("i18n"); const previewEmail = require('preview-email'); const nodemailer = require("nodemailer"); const transport_preview = nodemailer.createTransport({ jsonTransport: true }); // create reusable transport method (opens pool of SMTP connections) var smtpTransport = nodemailer.createTransport({ service: 'Gmail', auth: { user: process.env.EMAIL_FROM, pass: process.env.EMAIL_PW } }); function checkifSendEmail() { return process.env.SEND_EMAIL === "1"; //return false; } module.exports = { sendEmail_base: function (template, username, to, mylocalsconf) { // console.log("check EMAIL :" + checkifSendEmail()); const email = new Email({ message: { from: process.env.EMAIL_FROM, // sender address }, send: checkifSendEmail(), preview: !checkifSendEmail(), transport: { service: 'Gmail', auth: { user: process.env.EMAIL_FROM, pass: process.env.EMAIL_PW } }, }); email .send({ template: template, message: { to: to, }, locals: mylocalsconf, }) .then(console.log) .catch(console.error); }, sendEmail_Normale: function (to, subject, html) { // setup e-mail data with unicode symbols var mailOptions = { from: process.env.EMAIL_FROM, // sender address to: to, generateTextFromHTML: true, subject: subject, html: html, }; if (process.env.SEND_EMAIL === 1) { console.log("SEND EMAIL smtpTransport"); // send mail with defined transport object smtpTransport.sendMail(mailOptions, function (error, response) { if (error) { console.log(error); } else { console.log("Message sent: " + response); } }); } else { if (process.env.PROVA_EMAIL_TEMPLATE !== "1") previewEmail(mailOptions).then(console.log).catch(console.error); else transport_preview.sendMail(mailOptions).then(console.log).catch(console.error); } }, getHostByIdApp: function (idapp) { if (idapp === 1) { let siteport = (process.env.PORT_APP1 !== "0") ? (':' + process.env.PORT_APP1) : ""; return process.env.URLBASE_APP1 + siteport; } else { return "" } }, getlinkReg: function (idapp, idreg) { strlinkreg = this.getHostByIdApp(idapp) + process.env.LINKVERIF_REG + `?idapp=${idapp}&idlink=${idreg}`; return strlinkreg; }, getlinkRequestNewPassword: function (idapp, user, tokenforgot) { strlinkreg = this.getHostByIdApp(idapp) + "/#" + process.env.LINK_REQUEST_NEWPASSWORD + `?idapp=${idapp}&username=${user}&=tokenforgot=${tokenforgot}`; return strlinkreg; }, sendEmail_Registration: function (lang, emailto, user, idapp, idreg) { console.log('idapp', idapp, tools.getNomeAppByIdApp(idapp)); mylocalsconf = { locale: lang, nomeapp: tools.getNomeAppByIdApp(idapp), strlinkreg: this.getlinkReg(idapp, idreg), username: user.username, name: user.name, surname: user.surname, forgetpwd: "", emailto: emailto, }; this.sendEmail_base('registration/' + lang, user, emailto, mylocalsconf); // Send to the Admin an Email this.sendEmail_base('admin/registration/' + lang, user, tools.getAdminEmailByIdApp(idapp), mylocalsconf); }, sendEmail_RequestNewPassword: function (lang, emailto, idapp, tokenforgot) { mylocalsconf = { locale: lang, nomeapp: tools.getNomeAppByIdApp(idapp), user: user, strlinksetpassword: this.getlinkRequestNewPassword(idapp, user, tokenforgot), emailto: emailto, }; this.sendEmail_base('resetpwd/' + lang, user, emailto, mylocalsconf); }, sendEmail_Booking: function (res, lang, emailto, user, idapp, recbooking) { tools.mylog('sendEmail_Booking'); tools.mylog('tools.getNomeAppByIdApp(idapp)', tools.getNomeAppByIdApp(idapp), idapp); mylocalsconf = { locale: lang, nomeapp: tools.getNomeAppByIdApp(idapp), name: user.name, surname: user.surname, emailto: emailto, participants: '', msgbooking: recbooking.msgbooking, eventtextplain: tools.removeSpecialCharForEmail(recbooking.infoevent), event: recbooking.infoevent, }; if (recbooking.numpeople > 1) mylocalsconf.participants = recbooking.numpeople.toString() + ' ' + res.__("partecipanti"); let texthtml = ''; if (recbooking.modified) { texthtml = 'modifybooking'; }else { texthtml = 'makebooking'; } this.sendEmail_base('booking/'+texthtml+'/' + lang, user, emailto, mylocalsconf); // Send Email also to the Admin this.sendEmail_base('admin/'+texthtml+'/' + lang, user, tools.getAdminEmailByIdApp(idapp), mylocalsconf); }, sendEmail_CancelBooking: function (res, lang, emailto, user, idapp, recbooking) { tools.mylog('sendEmail_CancelBooking'); mylocalsconf = { locale: lang, nomeapp: tools.getNomeAppByIdApp(idapp), name: user.name, surname: user.surname, emailto: emailto, event: recbooking.infoevent, participants: '', eventtextplain: tools.removeSpecialCharForEmail(recbooking.infoevent), }; if (recbooking.numpeople > 1) mylocalsconf.participants = recbooking.numpeople.toString() + ' ' + res.__("partecipanti"); this.sendEmail_base('booking/cancelbooking/' + lang, user, emailto, mylocalsconf); // Send Email also to the Admin this.sendEmail_base('admin/cancelbooking/' + lang, user, tools.getAdminEmailByIdApp(idapp), mylocalsconf); }, sendEmail_Msg: function (res, lang, emailto, user, idapp, recbooking) { tools.mylog('sendEmail_Msg'); tools.mylog('tools.getNomeAppByIdApp(idapp)', tools.getNomeAppByIdApp(idapp), idapp); mylocalsconf = { locale: lang, nomeapp: tools.getNomeAppByIdApp(idapp), name: user.name, surname: user.surname, emailto: emailto, msgbooking: recbooking.msgbooking, eventtextplain: tools.removeSpecialCharForEmail(recbooking.infoevent), event: recbooking.infoevent, }; this.sendEmail_base('msg/sendmsg/' + lang, user, emailto, mylocalsconf); // Send Email also to the Admin // this.sendEmail_base('admin/sendmsg/' + lang, user, tools.getAdminEmailByIdApp(idapp), mylocalsconf); }, };