From 10a02bda9a36c01a13eb5b5c078f341919781d2d Mon Sep 17 00:00:00 2001 From: hutiefang Date: Mon, 22 Jun 2026 09:26:05 +0800 Subject: [PATCH] [ISSUE-4072][Bug] Use SSL when checking alert email --- .../core/service/impl/SettingServiceImpl.java | 20 +++--- .../service/impl/SettingServiceImplTest.java | 64 +++++++++++++++++++ 2 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/impl/SettingServiceImplTest.java diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SettingServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SettingServiceImpl.java index dcc9d9f9d9..77c6a7493b 100644 --- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SettingServiceImpl.java +++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SettingServiceImpl.java @@ -225,14 +225,7 @@ public SenderEmail getSenderEmail() { @Override public ResponseResult checkEmail(SenderEmail senderEmail) { ResponseResult result = new ResponseResult(); - Properties props = new Properties(); - props.put("mail.smtp.auth", "true"); - if (senderEmail.isSsl()) { - props.put("mail.smtp.starttls.enable", "true"); - } - props.put("mail.smtp.host", senderEmail.getHost()); - props.put("mail.smtp.port", senderEmail.getPort()); - + Properties props = buildEmailProperties(senderEmail); Session session = Session.getInstance(props); try { Transport transport = session.getTransport("smtp"); @@ -247,6 +240,17 @@ public ResponseResult checkEmail(SenderEmail senderEmail) { return result; } + static Properties buildEmailProperties(SenderEmail senderEmail) { + Properties props = new Properties(); + props.put("mail.smtp.auth", "true"); + props.put("mail.smtp.host", senderEmail.getHost()); + props.put("mail.smtp.port", senderEmail.getPort().toString()); + if (senderEmail.isSsl()) { + props.put("mail.smtp.ssl.enable", "true"); + } + return props; + } + @Override public boolean updateEmail(SenderEmail senderEmail) { List settings = SenderEmail.toSettings(senderEmail); diff --git a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/impl/SettingServiceImplTest.java b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/impl/SettingServiceImplTest.java new file mode 100644 index 0000000000..da811cb83c --- /dev/null +++ b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/impl/SettingServiceImplTest.java @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.streampark.console.core.service.impl; + +import org.apache.streampark.console.core.bean.SenderEmail; + +import org.junit.jupiter.api.Test; + +import java.util.Properties; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +class SettingServiceImplTest { + + @Test + void buildEmailPropertiesUsesSslOnConnectWhenSslEnabled() { + SenderEmail senderEmail = senderEmail(true); + + Properties properties = SettingServiceImpl.buildEmailProperties(senderEmail); + + assertEquals("true", properties.getProperty("mail.smtp.auth")); + assertEquals("smtp.126.com", properties.getProperty("mail.smtp.host")); + assertEquals("994", properties.getProperty("mail.smtp.port")); + assertEquals("true", properties.getProperty("mail.smtp.ssl.enable")); + assertNull(properties.getProperty("mail.smtp.starttls.enable")); + } + + @Test + void buildEmailPropertiesKeepsPlainSmtpWhenSslDisabled() { + SenderEmail senderEmail = senderEmail(false); + + Properties properties = SettingServiceImpl.buildEmailProperties(senderEmail); + + assertEquals("true", properties.getProperty("mail.smtp.auth")); + assertEquals("smtp.126.com", properties.getProperty("mail.smtp.host")); + assertEquals("994", properties.getProperty("mail.smtp.port")); + assertNull(properties.getProperty("mail.smtp.ssl.enable")); + assertNull(properties.getProperty("mail.smtp.starttls.enable")); + } + + private static SenderEmail senderEmail(boolean ssl) { + SenderEmail senderEmail = new SenderEmail(); + senderEmail.setHost("smtp.126.com"); + senderEmail.setPort(994); + senderEmail.setSsl(ssl); + return senderEmail; + } +}