From a4395967eee84dbd3f1d2a1ccd267c8aa5bfa933 Mon Sep 17 00:00:00 2001 From: hongwei Date: Tue, 5 Aug 2025 17:22:31 +0200 Subject: [PATCH] refactor/used Apache Commons Email instead of LiftMail- step4 --- obp-api/src/main/scala/bootstrap/liftweb/Boot.scala | 7 +++---- .../main/scala/code/api/util/CommonsEmailWrapper.scala | 7 +++++-- .../src/main/scala/code/model/dataAccess/AuthUser.scala | 9 ++++++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala b/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala index 3f607ecc8..64dd6fc2c 100644 --- a/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala +++ b/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala @@ -151,7 +151,6 @@ import org.apache.commons.io.FileUtils import java.io.{File, FileInputStream} import java.util.stream.Collectors import java.util.{Locale, TimeZone} -import javax.mail.internet.MimeMessage import scala.concurrent.ExecutionContext /** @@ -693,9 +692,9 @@ class Boot extends MdcLoggable { case e: ExceptionInInitializerError => logger.warn(s"BankAccountCreationListener Exception: $e") } - Mailer.devModeSend.default.set( (m : MimeMessage) => { - logger.info("Would have sent email if not in dev mode: " + m.getContent) - }) +// Mailer.devModeSend.default.set( (m : MimeMessage) => { +// logger.info("Would have sent email if not in dev mode: " + m.getContent) +// }) LiftRules.exceptionHandler.prepend{ case(_, r, e) if e.isInstanceOf[NullPointerException] && e.getMessage.contains("Looking for Connection Identifier") => { diff --git a/obp-api/src/main/scala/code/api/util/CommonsEmailWrapper.scala b/obp-api/src/main/scala/code/api/util/CommonsEmailWrapper.scala index 6a48c659b..e56e0ff73 100644 --- a/obp-api/src/main/scala/code/api/util/CommonsEmailWrapper.scala +++ b/obp-api/src/main/scala/code/api/util/CommonsEmailWrapper.scala @@ -23,7 +23,8 @@ object CommonsEmailWrapper extends MdcLoggable { password: String, useTLS: Boolean = true, useSSL: Boolean = false, - debug: Boolean = false + debug: Boolean = false, + tlsProtocols: String = "TLSv1.2" // TLS protocols to use ) /** @@ -51,7 +52,8 @@ object CommonsEmailWrapper extends MdcLoggable { password = APIUtil.getPropsValue("mail.smtp.password", ""), useTLS = APIUtil.getPropsValue("mail.smtp.starttls.enable", "false").toBoolean, useSSL = APIUtil.getPropsValue("mail.smtp.ssl.enable", "false").toBoolean, - debug = APIUtil.getPropsValue("mail.debug", "false").toBoolean + debug = APIUtil.getPropsValue("mail.debug", "false").toBoolean, + tlsProtocols = APIUtil.getPropsValue("mail.smtp.ssl.protocols", "TLSv1.2") ) } @@ -168,6 +170,7 @@ object CommonsEmailWrapper extends MdcLoggable { email.setSSLOnConnect(config.useSSL) email.setStartTLSEnabled(config.useTLS) email.setDebug(config.debug) + email.getMailSession.getProperties.setProperty("mail.smtp.ssl.protocols", config.tlsProtocols) // Set charset email.setCharset("UTF-8") diff --git a/obp-api/src/main/scala/code/model/dataAccess/AuthUser.scala b/obp-api/src/main/scala/code/model/dataAccess/AuthUser.scala index 83b8e34c7..8677da4db 100644 --- a/obp-api/src/main/scala/code/model/dataAccess/AuthUser.scala +++ b/obp-api/src/main/scala/code/model/dataAccess/AuthUser.scala @@ -33,6 +33,7 @@ import code.api.cache.Caching import code.api.dynamic.endpoint.helper.DynamicEndpointHelper import code.api.util.APIUtil._ import code.api.util.CommonFunctions.validUri +import code.api.util.CommonsEmailWrapper._ import code.api.util.ErrorMessages._ import code.api.util._ import code.bankconnectors.Connector @@ -55,7 +56,6 @@ import net.liftweb.http.S.fmapFunc import net.liftweb.http._ import net.liftweb.mapper._ import net.liftweb.sitemap.Loc.{If, LocParam, Template} -import net.liftweb.util.Mailer.{BCC, From, Subject, To} import net.liftweb.util._ import org.apache.commons.lang3.StringUtils import sh.ory.hydra.api.AdminApi @@ -597,7 +597,7 @@ import net.liftweb.util.Helpers._ val resetPasswordLinkProps = Constant.HostName val resetPasswordLink = APIUtil.getPropsValue("portal_hostname", resetPasswordLinkProps)+ passwordResetPath.mkString("/", "/", "/")+urlEncode(u.getUniqueId()) - logger.error("2222222222222222222222222222222222222223333:"+classOf[javax.activation.DataSource].getProtectionDomain.getCodeSource) + logger.error("222222222222222222222222222222222222222444:"+classOf[javax.activation.DataSource].getProtectionDomain.getCodeSource) // Use Apache Commons Email wrapper instead of Lift Mailer val emailBodies = generateResetEmailBodies(u, resetPasswordLink) @@ -615,11 +615,14 @@ import net.liftweb.util.Helpers._ textContent = textContent, htmlContent = htmlContent ) - sendHtmlEmail(emailContent) match { case Full(messageId) => logger.debug(s"Password reset email sent successfully with Message-ID: $messageId") case Empty => logger.error("Failed to send password reset email") } +// Mailer.sendMail(From(emailFrom),Subject(passwordResetEmailSubject + " - " + u.username), +// To(u.getEmail) :: +// generateResetEmailBodies(u, resetPasswordLink) ::: +// (bccEmail.toList.map(BCC(_))) :_*) case u => sendValidationEmail(u) }