From 38900a996452a2f1147e8955d20f9a38697a2e2c Mon Sep 17 00:00:00 2001 From: Dravere Date: Thu, 5 Oct 2017 00:26:44 +0200 Subject: [PATCH] Smtp emailer issue 5951 (#5954) * Fixed typo at emailer.js line 66 (serice -> service) * When custom SMTP user and password is empty no authentication is attempted * Added options to choose custom smtp connection security * Made custom smtp connection security strings translatable * Changed switch to if-else for custom smtp security option * Fixed emailer.js lint errors * Move custom setting to top of list --- .../language/en-GB/admin/settings/email.json | 4 +++ src/emailer.js | 28 +++++++++++++++---- src/views/admin/settings/email.tpl | 15 +++++++--- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/public/language/en-GB/admin/settings/email.json b/public/language/en-GB/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/en-GB/admin/settings/email.json +++ b/public/language/en-GB/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/src/emailer.js b/src/emailer.js index d82228d712..b1ed617445 100644 --- a/src/emailer.js +++ b/src/emailer.js @@ -56,17 +56,33 @@ Emailer.registerApp = function (expressApp) { // Enable Gmail transport if enabled in ACP if (parseInt(meta.config['email:smtpTransport:enabled'], 10) === 1) { - var smtpOptions = { - auth: { + var smtpOptions = {}; + + if (meta.config['email:smtpTransport:user'] || meta.config['email:smtpTransport:pass']) { + smtpOptions.auth = { user: meta.config['email:smtpTransport:user'], pass: meta.config['email:smtpTransport:pass'], - }, - }; + }; + } - if (meta.config['email:smtpTransport:serice'] === 'nodebb-custom-smtp') { + if (meta.config['email:smtpTransport:service'] === 'nodebb-custom-smtp') { smtpOptions.port = meta.config['email:smtpTransport:port']; smtpOptions.host = meta.config['email:smtpTransport:host']; - smtpOptions.secure = true; + + if (meta.config['email:smtpTransport:security'] === 'NONE') { + smtpOptions.secure = false; + smtpOptions.requireTLS = false; + smtpOptions.ignoreTLS = true; + } else if (meta.config['email:smtpTransport:security'] === 'STARTTLS') { + smtpOptions.secure = false; + smtpOptions.requireTLS = true; + smtpOptions.ignoreTLS = false; + } else { + // meta.config['email:smtpTransport:security'] === 'ENCRYPTED' or undefined + smtpOptions.secure = true; + smtpOptions.requireTLS = true; + smtpOptions.ignoreTLS = false; + } } else { smtpOptions.service = meta.config['email:smtpTransport:service']; } diff --git a/src/views/admin/settings/email.tpl b/src/views/admin/settings/email.tpl index 50a3423ece..7315564f1b 100644 --- a/src/views/admin/settings/email.tpl +++ b/src/views/admin/settings/email.tpl @@ -40,12 +40,12 @@

[[admin/settings/email:smtp-transport.service-help]] @@ -63,6 +63,13 @@ + + +

@@ -136,4 +143,4 @@
- \ No newline at end of file +