Browse Source

[Fix][Alert] Fix when auth is false and user || pwd null can't send email excection (#13761)

* fix send email error

* fix spotless

* fix-sonar

(cherry picked from commit 69e744961b)
3.0.5-release
旺阳 2 years ago committed by Jay Chung
parent
commit
0bde5473ac
  1. 11
      dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java
  2. 30
      dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/MailUtilsTest.java

11
dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java

@ -25,6 +25,7 @@ import org.apache.dolphinscheduler.alert.api.ShowType;
import org.apache.dolphinscheduler.plugin.alert.email.exception.AlertEmailException;
import org.apache.dolphinscheduler.plugin.alert.email.template.AlertTemplate;
import org.apache.dolphinscheduler.plugin.alert.email.template.DefaultHTMLTemplate;
import org.apache.dolphinscheduler.spi.utils.Constants;
import org.apache.dolphinscheduler.spi.utils.StringUtils;
import org.apache.commons.collections4.CollectionUtils;
@ -104,12 +105,14 @@ public final class MailSender {
requireNonNull(mailSenderEmail, MailParamsConstants.NAME_MAIL_SENDER + mustNotNull);
enableSmtpAuth = config.get(MailParamsConstants.NAME_MAIL_SMTP_AUTH);
mailUser = config.get(MailParamsConstants.NAME_MAIL_USER);
requireNonNull(mailUser, MailParamsConstants.NAME_MAIL_USER + mustNotNull);
mailPasswd = config.get(MailParamsConstants.NAME_MAIL_PASSWD);
requireNonNull(mailPasswd, MailParamsConstants.NAME_MAIL_PASSWD + mustNotNull);
// Needs to check user && password only if enableSmtpAuth is true
if (Constants.STRING_TRUE.equals(enableSmtpAuth)) {
requireNonNull(mailUser, MailParamsConstants.NAME_MAIL_USER + mustNotNull);
requireNonNull(mailPasswd, MailParamsConstants.NAME_MAIL_PASSWD + mustNotNull);
}
mailUseStartTLS = config.get(MailParamsConstants.NAME_MAIL_SMTP_STARTTLS_ENABLE);
requireNonNull(mailUseStartTLS, MailParamsConstants.NAME_MAIL_SMTP_STARTTLS_ENABLE + mustNotNull);

30
dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/MailUtilsTest.java

@ -29,6 +29,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
@ -78,6 +79,35 @@ public class MailUtilsTest {
content);
}
@Test
public void testAuthCheck() {
String title = "Auth Exception";
String content = list2String();
// test auth false and user && pwd null will pass
emailConfig.put(MailParamsConstants.NAME_MAIL_SMTP_AUTH, "false");
emailConfig.put(MailParamsConstants.NAME_MAIL_USER, null);
emailConfig.put(MailParamsConstants.NAME_MAIL_PASSWD, null);
mailSender = new MailSender(emailConfig);
mailSender.sendMails(title, content);
try {
// test auth true and user null will throw exception
emailConfig.put(MailParamsConstants.NAME_MAIL_SMTP_AUTH, "true");
emailConfig.put(MailParamsConstants.NAME_MAIL_USER, null);
mailSender = new MailSender(emailConfig);
mailSender.sendMails(title, content);
} catch (Exception e) {
Assert.assertTrue(e.getMessage().contains(MailParamsConstants.NAME_MAIL_USER));
}
// test auth true and user && pwd not null will pass
emailConfig.put(MailParamsConstants.NAME_MAIL_USER, "user");
emailConfig.put(MailParamsConstants.NAME_MAIL_PASSWD, "passwd");
mailSender = new MailSender(emailConfig);
mailSender.sendMails(title, content);
}
public String list2String() {
LinkedHashMap<String, Object> map1 = new LinkedHashMap<>();

Loading…
Cancel
Save