diff --git a/client/src/Pages/Settings/SettingsEmail.jsx b/client/src/Pages/Settings/SettingsEmail.jsx
index 7d6538734..113d5bf44 100644
--- a/client/src/Pages/Settings/SettingsEmail.jsx
+++ b/client/src/Pages/Settings/SettingsEmail.jsx
@@ -50,6 +50,8 @@ const SettingsEmail = ({
const emailConfig = {
systemEmailHost: settingsData?.settings?.systemEmailHost,
systemEmailPort: settingsData?.settings?.systemEmailPort,
+ systemEmailSecure: settingsData?.settings?.systemEmailSecure,
+ systemEmailPool: settingsData?.settings?.systemEmailPool,
systemEmailUser: settingsData?.settings?.systemEmailUser,
systemEmailAddress: settingsData?.settings?.systemEmailAddress,
systemEmailPassword: password || settingsData?.settings?.systemEmailPassword,
@@ -110,6 +112,27 @@ const SettingsEmail = ({
onChange={handleChange}
/>
+
+ {t("settingsEmailSecure")}
+
+ {t("settingsEmailPool")}
+
+
{t("settingsEmailUser")}
{
if (
name === "systemEmailIgnoreTLS" ||
name === "systemEmailRequireTLS" ||
- name === "systemEmailRejectUnauthorized"
+ name === "systemEmailRejectUnauthorized" ||
+ name === "systemEmailSecure" ||
+ name === "systemEmailPool"
) {
newValue = checked;
}
diff --git a/client/src/Utils/NetworkService.js b/client/src/Utils/NetworkService.js
index 3d124a3e6..dcb21df92 100644
--- a/client/src/Utils/NetworkService.js
+++ b/client/src/Utils/NetworkService.js
@@ -1014,6 +1014,12 @@ class NetworkService {
systemEmailPort: emailConfig.systemEmailPort,
systemEmailAddress: emailConfig.systemEmailAddress,
systemEmailPassword: emailConfig.systemEmailPassword,
+ systemEmailSecure: emailConfig.systemEmailSecure,
+ systemEmailPool: emailConfig.systemEmailPool,
+ systemEmailIgnoreTLS: emailConfig.systemEmailIgnoreTLS,
+ systemEmailRequireTLS: emailConfig.systemEmailRequireTLS,
+ systemEmailRejectUnauthorized: emailConfig.systemEmailRejectUnauthorized,
+ systemEmailTLSServername: emailConfig.systemEmailTLSServername,
// Only include these if they are present
...(emailConfig.systemEmailConnectionHost && {
systemEmailConnectionHost: emailConfig.systemEmailConnectionHost,
diff --git a/client/src/Validation/validation.js b/client/src/Validation/validation.js
index cb2d4e797..089722a8d 100644
--- a/client/src/Validation/validation.js
+++ b/client/src/Validation/validation.js
@@ -290,6 +290,8 @@ const settingsValidation = joi.object({
timezone: joi.string().allow("").optional(),
systemEmailHost: joi.string().allow(""),
systemEmailPort: joi.number().allow(null, ""),
+ systemEmailSecure: joi.boolean().optional(),
+ systemEmailPool: joi.boolean().optional(),
systemEmailAddress: joi.string().allow(""),
systemEmailPassword: joi.string().allow(""),
systemEmailUser: joi.string().allow(""),
diff --git a/client/src/locales/en.json b/client/src/locales/en.json
index 028f9483c..610c56d0e 100644
--- a/client/src/locales/en.json
+++ b/client/src/locales/en.json
@@ -683,6 +683,8 @@
"settingsEmailIgnoreTLS": "Ignore TLS",
"settingsEmailRequireTLS": "Require TLS",
"settingsEmailRejectUnauthorized": "Reject Unauthorized",
+ "settingsEmailSecure": "Secure",
+ "settingsEmailPool": "Pool",
"state": "State",
"statusBreadCrumbsStatusPages": "Status Pages",
"statusBreadCrumbsDetails": "Details",
diff --git a/server/controllers/settingsController.js b/server/controllers/settingsController.js
index 58e8ce9f4..d1010c093 100755
--- a/server/controllers/settingsController.js
+++ b/server/controllers/settingsController.js
@@ -74,6 +74,12 @@ class SettingsController {
systemEmailPassword,
systemEmailUser,
systemEmailConnectionHost,
+ systemEmailSecure,
+ systemEmailPool,
+ systemEmailIgnoreTLS,
+ systemEmailRequireTLS,
+ systemEmailRejectUnauthorized,
+ systemEmailTLSServername,
} = req.body;
const subject = this.stringService.testEmailSubject;
@@ -91,6 +97,12 @@ class SettingsController {
systemEmailAddress,
systemEmailPassword,
systemEmailConnectionHost,
+ systemEmailSecure,
+ systemEmailPool,
+ systemEmailIgnoreTLS,
+ systemEmailRequireTLS,
+ systemEmailRejectUnauthorized,
+ systemEmailTLSServername,
}
);
diff --git a/server/service/emailService.js b/server/service/emailService.js
index 3b627fb95..325871fac 100755
--- a/server/service/emailService.js
+++ b/server/service/emailService.js
@@ -101,6 +101,8 @@ class EmailService {
const {
systemEmailHost,
systemEmailPort,
+ systemEmailSecure,
+ systemEmailPool,
systemEmailUser,
systemEmailAddress,
systemEmailPassword,
@@ -111,32 +113,23 @@ class EmailService {
systemEmailRejectUnauthorized,
} = config;
- const baseEmailConfig = {
+ const emailConfig = {
host: systemEmailHost,
port: Number(systemEmailPort),
- secure: true,
+ secure: systemEmailSecure,
auth: {
user: systemEmailUser || systemEmailAddress,
pass: systemEmailPassword,
},
connectionTimeout: 5000,
+ pool: systemEmailPool,
+ tls: { rejectUnauthorized: systemEmailRejectUnauthorized },
+ ignoreTLS: systemEmailIgnoreTLS,
+ requireTLS: systemEmailRequireTLS,
+ servername: systemEmailTLSServername,
+ name: systemEmailConnectionHost || "localhost",
};
- const isSmtps = Number(systemEmailPort) === 465;
-
- const emailConfig = !isSmtps
- ? {
- ...baseEmailConfig,
- name: systemEmailConnectionHost || "localhost",
- secure: false,
- pool: true,
- tls: { rejectUnauthorized: systemEmailRejectUnauthorized },
- ignoreTLS: systemEmailIgnoreTLS,
- requireTLS: systemEmailRequireTLS,
- servername: systemEmailTLSServername,
- }
- : baseEmailConfig;
-
this.transporter = this.nodemailer.createTransport(emailConfig);
const buildHtml = async (template, context) => {
diff --git a/server/validation/joi.js b/server/validation/joi.js
index 271cd2d21..b7858f92d 100755
--- a/server/validation/joi.js
+++ b/server/validation/joi.js
@@ -617,10 +617,16 @@ const sendTestEmailBodyValidation = joi.object({
to: joi.string().required(),
systemEmailHost: joi.string(),
systemEmailPort: joi.number(),
+ systemEmailSecure: joi.boolean(),
+ systemEmailPool: joi.boolean(),
systemEmailAddress: joi.string(),
systemEmailPassword: joi.string(),
systemEmailUser: joi.string(),
systemEmailConnectionHost: joi.string(),
+ systemEmailIgnoreTLS: joi.boolean(),
+ systemEmailRequireTLS: joi.boolean(),
+ systemEmailRejectUnauthorized: joi.boolean(),
+ systemEmailTLSServername: joi.string(),
});
export {