Separate client and server codes. Keep everything in one git repo for simplicity
[vchess.git] / server / utils / mailer.js
diff --git a/server/utils/mailer.js b/server/utils/mailer.js
new file mode 100644 (file)
index 0000000..8a059da
--- /dev/null
@@ -0,0 +1,43 @@
+const nodemailer = require('nodemailer');
+const params = require("../config/parameters");
+
+module.exports = function(from, to, subject, body, cb)
+{
+       // Avoid the actual sending in development mode
+       if (params.env === 'development')
+       {
+               console.log("New mail: from " + from + " / to " + to);
+               console.log("Subject: " + subject);
+               let msgText = body.split('\\n');
+               msgText.forEach(msg => { console.log(msg); });
+               return cb();
+       }
+
+  // Create reusable transporter object using the default SMTP transport
+       const transporter = nodemailer.createTransport({
+               host: params.mail.host,
+               port: params.mail.port,
+               secure: params.mail.secure,
+               auth: {
+                       user: params.mail.user,
+                       pass: params.mail.pass
+               }
+       });
+
+       // Setup email data with unicode symbols
+       const mailOptions = {
+               from: from, //note: some SMTP serves might forbid this
+               to: to,
+               subject: subject,
+               text: body,
+  };
+
+       // Send mail with the defined transport object
+       transporter.sendMail(mailOptions, (error, info) => {
+               if (!!error)
+                       return cb(error);
+    // Ignore info. Option:
+               //console.log('Message sent: %s', info.messageId);
+               return cb();
+  });
+}