From 53c358cfd731ba2d8728444d5419b13a62ffa0f4 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 28 Sep 2022 11:30:48 +0200 Subject: [PATCH] :bug: Fix ssl support on email sending module --- backend/src/app/config.clj | 4 +++- backend/src/app/emails.clj | 28 ++++++++++++++++------------ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/backend/src/app/config.clj b/backend/src/app/config.clj index b718bdeeb3..f394bd6a8b 100644 --- a/backend/src/app/config.clj +++ b/backend/src/app/config.clj @@ -271,13 +271,13 @@ ::public-uri ::redis-uri ::registration-domain-whitelist + ::rpc-rlimit-config ::semaphore-process-font ::semaphore-process-image ::semaphore-update-file ::semaphore-auth - ::rpc-rlimit-config ::smtp-default-from ::smtp-default-reply-to ::smtp-host @@ -286,8 +286,10 @@ ::smtp-ssl ::smtp-tls ::smtp-username + ::srepl-host ::srepl-port + ::assets-storage-backend ::storage-assets-fs-directory ::storage-assets-s3-bucket diff --git a/backend/src/app/emails.clj b/backend/src/app/emails.clj index 6429bf75c4..d072845a5b 100644 --- a/backend/src/app/emails.clj +++ b/backend/src/app/emails.clj @@ -56,7 +56,6 @@ type (resolve-recipient-type type)] (.addRecipients mmsg type address) mmsg))) - (defn- assign-recipients [mmsg {:keys [to cc bcc] :as params}] (cond-> mmsg @@ -139,6 +138,7 @@ (Properties.) {"mail.user" username "mail.host" host + "mail.debug" (contains? cf/flags :smtp-debug) "mail.from" default-from "mail.smtp.auth" (boolean username) "mail.smtp.starttls.enable" tls @@ -150,17 +150,14 @@ "mail.smtp.connectiontimeout" timeout})) (defn- create-smtp-session - [{:keys [debug] :or {debug false} :as opts}] - (let [props (opts->props opts) - session (Session/getInstance props)] - (.setDebug session debug) - session)) + [opts] + (let [props (opts->props opts)] + (Session/getInstance props))) (defn- create-smtp-message ^MimeMessage - [cfg params] - (let [session (create-smtp-session cfg) - mmsg (MimeMessage. ^Session session)] + [cfg session params] + (let [mmsg (MimeMessage. ^Session session)] (assign-recipients mmsg params) (assign-from mmsg cfg params) (assign-reply-to mmsg cfg params) @@ -304,9 +301,16 @@ [_ cfg] (fn [params] (when (contains? cf/flags :smtp) - (Transport/send (create-smtp-message cfg params) - (:username cfg) - (:password cfg))) + (let [session (create-smtp-session cfg)] + (with-open [transport (.getTransport session (if (:ssl cfg) "smtps" "smtp"))] + (.connect ^Transport transport + ^String (:username cfg) + ^String (:password cfg)) + + (let [^MimeMessage message (create-smtp-message cfg session params)] + (.sendMessage ^Transport transport + ^MimeMessage message + (.getAllRecipients message)))))) (when (or (contains? cf/flags :log-emails) (not (contains? cf/flags :smtp)))