Files
freeplanet_serverside/server/sendemail.js
2019-10-10 21:08:12 +02:00

199 lines
5.6 KiB
JavaScript

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) {
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);
},
};