From f9fa2c6706a8bf949fe5efd6664dec8c80e18659 Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Thu, 28 Nov 2024 12:13:23 +0100 Subject: [PATCH] feat: add option to disable TLS for email sending --- backend/internal/dto/app_config_dto.go | 1 + backend/internal/model/app_config.go | 1 + backend/internal/service/app_config_service.go | 5 +++++ backend/internal/service/email_service.go | 9 ++++++--- frontend/src/lib/types/application-configuration.ts | 1 + .../forms/app-config-email-form.svelte | 10 +++++++++- 6 files changed, 23 insertions(+), 4 deletions(-) diff --git a/backend/internal/dto/app_config_dto.go b/backend/internal/dto/app_config_dto.go index c31f058..a10e4d7 100644 --- a/backend/internal/dto/app_config_dto.go +++ b/backend/internal/dto/app_config_dto.go @@ -22,5 +22,6 @@ type AppConfigUpdateDto struct { SmtpFrom string `json:"smtpFrom" binding:"omitempty,email"` SmtpUser string `json:"smtpUser"` SmtpPassword string `json:"smtpPassword"` + SmtpTls string `json:"smtpTls"` SmtpSkipCertVerify string `json:"smtpSkipCertVerify"` } diff --git a/backend/internal/model/app_config.go b/backend/internal/model/app_config.go index b84010d..b8e4471 100644 --- a/backend/internal/model/app_config.go +++ b/backend/internal/model/app_config.go @@ -25,5 +25,6 @@ type AppConfig struct { SmtpFrom AppConfigVariable SmtpUser AppConfigVariable SmtpPassword AppConfigVariable + SmtpTls AppConfigVariable SmtpSkipCertVerify AppConfigVariable } diff --git a/backend/internal/service/app_config_service.go b/backend/internal/service/app_config_service.go index 307870c..84f2dfd 100644 --- a/backend/internal/service/app_config_service.go +++ b/backend/internal/service/app_config_service.go @@ -95,6 +95,11 @@ var defaultDbConfig = model.AppConfig{ Key: "smtpPassword", Type: "string", }, + SmtpTls: model.AppConfigVariable{ + Key: "smtpTls", + Type: "bool", + DefaultValue: "true", + }, SmtpSkipCertVerify: model.AppConfigVariable{ Key: "smtpSkipCertVerify", Type: "bool", diff --git a/backend/internal/service/email_service.go b/backend/internal/service/email_service.go index 45f0374..8f45847 100644 --- a/backend/internal/service/email_service.go +++ b/backend/internal/service/email_service.go @@ -98,15 +98,18 @@ func SendEmail[V any](srv *EmailService, toEmail email.Address, template email.T // Connect to the SMTP server port := srv.appConfigService.DbConfig.SmtpPort.Value + smtpAddress := srv.appConfigService.DbConfig.SmtpHost.Value + ":" + port var client *smtp.Client - if port == "465" { + if srv.appConfigService.DbConfig.SmtpTls.Value == "false" { + client, err = smtp.Dial(smtpAddress) + } else if port == "465" { client, err = srv.connectToSmtpServerUsingImplicitTLS( - srv.appConfigService.DbConfig.SmtpHost.Value+":"+port, + smtpAddress, tlsConfig, ) } else { client, err = srv.connectToSmtpServerUsingStartTLS( - srv.appConfigService.DbConfig.SmtpHost.Value+":"+port, + smtpAddress, tlsConfig, ) } diff --git a/frontend/src/lib/types/application-configuration.ts b/frontend/src/lib/types/application-configuration.ts index 2eca828..bc28de3 100644 --- a/frontend/src/lib/types/application-configuration.ts +++ b/frontend/src/lib/types/application-configuration.ts @@ -12,6 +12,7 @@ export type AllAppConfig = AppConfig & { smtpFrom: string; smtpUser: string; smtpPassword: string; + smtpTls: boolean; smtpSkipCertVerify: boolean; }; diff --git a/frontend/src/routes/settings/admin/application-configuration/forms/app-config-email-form.svelte b/frontend/src/routes/settings/admin/application-configuration/forms/app-config-email-form.svelte index 21518b2..6c0b5a3 100644 --- a/frontend/src/routes/settings/admin/application-configuration/forms/app-config-email-form.svelte +++ b/frontend/src/routes/settings/admin/application-configuration/forms/app-config-email-form.svelte @@ -28,6 +28,7 @@ smtpUser: appConfig.smtpUser, smtpPassword: appConfig.smtpPassword, smtpFrom: appConfig.smtpFrom, + smtpTls: appConfig.smtpTls, smtpSkipCertVerify: appConfig.smtpSkipCertVerify }; @@ -37,6 +38,7 @@ smtpUser: z.string().min(1), smtpPassword: z.string().min(1), smtpFrom: z.string().email(), + smtpTls: z.boolean(), smtpSkipCertVerify: z.boolean() }); @@ -79,12 +81,18 @@
-
+
+