diff --git a/pkg/core/notifier/providers/email/email.go b/pkg/core/notifier/providers/email/email.go index 6060fab42..57c470af1 100644 --- a/pkg/core/notifier/providers/email/email.go +++ b/pkg/core/notifier/providers/email/email.go @@ -91,7 +91,6 @@ func (n *Notifier) Notify(ctx context.Context, subject string, message string) ( clientOptions = append(clientOptions, mail.WithTLSConfig(tlsConfig)) clientOptions = append(clientOptions, mail.WithTLSPolicy(mail.TLSMandatory)) } else { - clientOptions = append(clientOptions, mail.WithSSLPort(true)) clientOptions = append(clientOptions, mail.WithTLSPolicy(mail.TLSOpportunistic)) } diff --git a/ui/src/components/access/forms/AccessConfigFieldsProviderEmail.tsx b/ui/src/components/access/forms/AccessConfigFieldsProviderEmail.tsx index 70e14a4dd..2a800759c 100644 --- a/ui/src/components/access/forms/AccessConfigFieldsProviderEmail.tsx +++ b/ui/src/components/access/forms/AccessConfigFieldsProviderEmail.tsx @@ -4,7 +4,7 @@ import { createSchemaFieldRule } from "antd-zod"; import { z } from "zod"; import Show from "@/components/Show"; -import { isEmail, isPortNumber } from "@/utils/validator"; +import { isDomain, isEmail, isIPv4, isIPv6, isPortNumber } from "@/utils/validator"; import { useFormNestedFieldsContext } from "./_context"; @@ -127,7 +127,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType }) = const { t } = i18n; return z.object({ - smtpHost: z.string().nonempty(t("access.form.email_smtp_host.placeholder")), + smtpHost: z.string().refine((v) => isDomain(v) || isIPv4(v) || isIPv6(v), t("common.errmsg.host_invalid")), smtpPort: z.coerce.number().refine((v) => isPortNumber(v), t("common.errmsg.port_invalid")), smtpTls: z.boolean().nullish(), username: z.string().nonempty(t("access.form.email_username.placeholder")),