From 1f6c6140bafd499f4af42b8d77ae16ae58a1ab88 Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Mon, 23 Dec 2024 15:28:35 +0100 Subject: [PATCH] fix: smtp encryption --- app/Notifications/Channels/EmailChannel.php | 11 +++++++++-- bootstrap/helpers/notifications.php | 11 ++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/Notifications/Channels/EmailChannel.php b/app/Notifications/Channels/EmailChannel.php index 0985f43933..6ffe5c4d79 100644 --- a/app/Notifications/Channels/EmailChannel.php +++ b/app/Notifications/Channels/EmailChannel.php @@ -66,17 +66,24 @@ private function bootConfigs($notifiable): void } if ($emailSettings->smtp_enabled) { + $encryption = match (strtolower($emailSettings->smtp_encryption)) { + 'starttls' => null, + 'tls' => 'tls', + 'none' => null, + default => null, + }; + config()->set('mail.default', 'smtp'); config()->set('mail.mailers.smtp', [ 'transport' => 'smtp', 'host' => $emailSettings->smtp_host, 'port' => $emailSettings->smtp_port, - 'encryption' => $emailSettings->smtp_encryption === 'none' ? null : $emailSettings->smtp_encryption, + 'encryption' => $encryption, 'username' => $emailSettings->smtp_username, 'password' => $emailSettings->smtp_password, 'timeout' => $emailSettings->smtp_timeout, 'local_domain' => null, - 'auto_tls' => $emailSettings->smtp_encryption === 'none' ? '0' : '', + 'auto_tls' => $emailSettings->smtp_encryption === 'none' ? '0' : '', // If encryption is "none", it will not try to upgrade to TLS via StartTLS to make sure it is unencrypted. ]); } } diff --git a/bootstrap/helpers/notifications.php b/bootstrap/helpers/notifications.php index 3b1eb758b8..46f0ebca76 100644 --- a/bootstrap/helpers/notifications.php +++ b/bootstrap/helpers/notifications.php @@ -67,17 +67,26 @@ function set_transanctional_email_settings(?InstanceSettings $settings = null): return 'resend'; } + + $encryption = match (strtolower(data_get($settings, 'smtp_encryption'))) { + 'starttls' => null, + 'tls' => 'tls', + 'none' => null, + default => null, + }; + if (data_get($settings, 'smtp_enabled')) { config()->set('mail.default', 'smtp'); config()->set('mail.mailers.smtp', [ 'transport' => 'smtp', 'host' => data_get($settings, 'smtp_host'), 'port' => data_get($settings, 'smtp_port'), - 'encryption' => data_get($settings, 'smtp_encryption'), + 'encryption' => $encryption, 'username' => data_get($settings, 'smtp_username'), 'password' => data_get($settings, 'smtp_password'), 'timeout' => data_get($settings, 'smtp_timeout'), 'local_domain' => null, + 'auto_tls' => data_get($settings, 'smtp_encryption') === 'none' ? '0' : '', // If encryption is "none", it will not try to upgrade to TLS via StartTLS to make sure it is unencrypted. ]); return 'smtp';