From 232f2fc0e93a1fa77a15b68aebbb86da42f642e3 Mon Sep 17 00:00:00 2001 From: Chip Bell Date: Mon, 2 Mar 2020 10:14:43 -0500 Subject: [PATCH 1/3] Const FTW --- app/helpers/sendmail.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/helpers/sendmail.js b/app/helpers/sendmail.js index 76e73ff..0f13d5e 100644 --- a/app/helpers/sendmail.js +++ b/app/helpers/sendmail.js @@ -1,8 +1,8 @@ -var nodemailer = require('nodemailer'); +const nodemailer = require('nodemailer'); module.exports = function(mailOptions, callback) { - var transporter = nodemailer.createTransport({ + const transporter = nodemailer.createTransport({ service: 'Gmail', auth: { user: process.env.GMAIL_USER, @@ -10,4 +10,4 @@ module.exports = function(mailOptions, callback) } }); transporter.sendMail(mailOptions, callback); -}; \ No newline at end of file +}; From 7e1d1f58ce636567df99ef7ee6c6a796c23bb8b1 Mon Sep 17 00:00:00 2001 From: Chip Bell Date: Mon, 2 Mar 2020 10:25:20 -0500 Subject: [PATCH 2/3] More flexible email sending Will attempt to use SMTP if possible, but will fallback to gmail if needed --- app/helpers/sendmail.js | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/app/helpers/sendmail.js b/app/helpers/sendmail.js index 0f13d5e..dfc14e8 100644 --- a/app/helpers/sendmail.js +++ b/app/helpers/sendmail.js @@ -1,13 +1,28 @@ const nodemailer = require('nodemailer'); -module.exports = function(mailOptions, callback) -{ - const transporter = nodemailer.createTransport({ - service: 'Gmail', - auth: { - user: process.env.GMAIL_USER, - pass: process.env.GMAIL_PASSWORD - } - }); - transporter.sendMail(mailOptions, callback); +module.exports = function(mailOptions, callback) { + let transportConfig; + + const canSendSmtp = process.env.SMTP_USER !== undefined && process.env.SMTP_PASSWORD !== undefined && process.env.SMTP_HOST !== undefined; + if (canSendSmtp) { + transportConfig = { + host: process.env.SMTP_HOST, + secure: true, + auth: { + user: process.env.SMTP_USER, + pass: process.env.SMTP_PASSWORD + } + }; + } else { + transportConfig = { + service: 'Gmail', + auth: { + user: process.env.GMAIL_USER, + pass: process.env.GMAIL_PASSWORD + } + }; + } + + const transporter = nodemailer.createTransport(transportConfig); + transporter.sendMail(mailOptions, callback); }; From 3129035fe20e92bb1ac63602edcec7c92e685364 Mon Sep 17 00:00:00 2001 From: Chip Bell Date: Mon, 2 Mar 2020 12:40:39 -0500 Subject: [PATCH 3/3] Adding another SMTP env value For STMP sending, we have to have the correct from address. However gmail ignores this value for some reason, hence the dummy value. So, if the value is defined we'll use it. If it isn't, we default to the old dummy value. --- app/routes/forgot.js | 4 ++-- app/routes/reset.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/routes/forgot.js b/app/routes/forgot.js index 0256559..16b643e 100644 --- a/app/routes/forgot.js +++ b/app/routes/forgot.js @@ -34,7 +34,7 @@ router.post('/', function(req, res, next) { var mailOptions = { to: user.email, - from: 'passwordreset@demo.com', + from: process.env.SMTP_FROM_USER || 'passwordreset@demo.com', subject: 'Node.js Password Reset', text: 'You are receiving this because you (or someone else) have requested the reset of the password for your account.\n\n' + 'Please click on the following link, or paste this into your browser to complete the process:\n\n' + @@ -64,4 +64,4 @@ router.get('/', function(req, res) }); }); -module.exports = router; \ No newline at end of file +module.exports = router; diff --git a/app/routes/reset.js b/app/routes/reset.js index 0b4e661..1d47559 100644 --- a/app/routes/reset.js +++ b/app/routes/reset.js @@ -55,7 +55,7 @@ router.post('/:token', function(req, res) { var mailOptions = { to: user.email, - from: 'passwordreset@demo.com', + from: process.env.SMTP_FROM_USER || 'passwordreset@demo.com', subject: 'Your password has been changed', text: 'Hello,\n\n' + 'This is a confirmation that the password for your account ' + user.email + ' has just been changed.\n' @@ -73,4 +73,4 @@ router.post('/:token', function(req, res) }); }); -module.exports = router; \ No newline at end of file +module.exports = router;