diff --git a/client/src/Components/v2/design-elements/TextLink.tsx b/client/src/Components/v2/design-elements/TextLink.tsx
index 704b4b841..2f79b1beb 100644
--- a/client/src/Components/v2/design-elements/TextLink.tsx
+++ b/client/src/Components/v2/design-elements/TextLink.tsx
@@ -10,7 +10,7 @@ interface TextLinkProps extends StackProps {
text: string;
linkText: string;
href: string;
- target?: string;
+ target?: "_self" | "_blank" | "_parent" | "_top";
}
export const TextLink = ({
@@ -34,6 +34,7 @@ export const TextLink = ({
to={href}
component={RouterLink}
target={target}
+ {...(target === "_blank" && { rel: "noopener noreferrer" })}
>
{linkText}
diff --git a/client/src/Pages/Settings/index.tsx b/client/src/Pages/Settings/index.tsx
index d1b6df976..a8549dcc4 100644
--- a/client/src/Pages/Settings/index.tsx
+++ b/client/src/Pages/Settings/index.tsx
@@ -1,4 +1,4 @@
-import { BasePage, ConfigBox } from "@/Components/v2/design-elements";
+import { BasePage, ConfigBox, TextLink } from "@/Components/v2/design-elements";
import { Autocomplete, Select, Dialog, SwitchComponent } from "@/Components/v2/inputs";
import { Stack, useTheme, MenuItem, type SelectChangeEvent } from "@mui/material";
import { useEffect } from "react";
@@ -518,44 +518,52 @@ export const SettingsPage = () => {
title={t("pages.settings.form.email.title")}
subtitle={t("pages.settings.form.email.description")}
leftContent={
-
-
- {JSON.stringify(
- {
- host: form.watch("systemEmailHost") || "",
- port: form.watch("systemEmailPort") || "",
- secure: form.watch("systemEmailSecure") ?? false,
- auth: {
- user:
- form.watch("systemEmailUser") ||
- form.watch("systemEmailAddress") ||
- "",
- pass: "",
+
+
+
+
+ {JSON.stringify(
+ {
+ host: form.watch("systemEmailHost") || "",
+ port: form.watch("systemEmailPort") || "",
+ secure: form.watch("systemEmailSecure") ?? false,
+ auth: {
+ user:
+ form.watch("systemEmailUser") ||
+ form.watch("systemEmailAddress") ||
+ "",
+ pass: "",
+ },
+ name: form.watch("systemEmailConnectionHost") || "localhost",
+ pool: form.watch("systemEmailPool") ?? false,
+ tls: {
+ rejectUnauthorized:
+ form.watch("systemEmailRejectUnauthorized") ?? true,
+ ignoreTLS: form.watch("systemEmailIgnoreTLS") ?? false,
+ requireTLS: form.watch("systemEmailRequireTLS") ?? false,
+ servername: form.watch("systemEmailTLSServername") || "",
+ },
},
- name: form.watch("systemEmailConnectionHost") || "localhost",
- pool: form.watch("systemEmailPool") ?? false,
- tls: {
- rejectUnauthorized:
- form.watch("systemEmailRejectUnauthorized") ?? true,
- ignoreTLS: form.watch("systemEmailIgnoreTLS") ?? false,
- requireTLS: form.watch("systemEmailRequireTLS") ?? false,
- servername: form.watch("systemEmailTLSServername") || "",
- },
- },
- null,
- 2
- )}
-
-
+ null,
+ 2
+ )}
+
+
+
}
rightContent={
diff --git a/client/src/locales/en.json b/client/src/locales/en.json
index 4dfddb23f..b3d2d6bba 100644
--- a/client/src/locales/en.json
+++ b/client/src/locales/en.json
@@ -1023,6 +1023,8 @@
"email": {
"title": "Email settings",
"description": "Configure the email settings for your system. This is used to send notifications and alerts.",
+ "descriptionTransport": "This builds an SMTP transport for NodeMailer",
+ "descriptionTransportLink": "See specifications here",
"option": {
"host": {
"label": "Email host - Hostname or IP address to connect to",