|
@@ -0,0 +1,75 @@
|
|
|
|
+package com.dayou.configuration;
|
|
|
|
+
|
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.springframework.mail.javamail.JavaMailSenderImpl;
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
+
|
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Properties;
|
|
|
|
+
|
|
|
|
+@Slf4j
|
|
|
|
+@Component
|
|
|
|
+@AllArgsConstructor
|
|
|
|
+public class MailSenderConfig {
|
|
|
|
+
|
|
|
|
+ private final MailConfig mailConfig;
|
|
|
|
+
|
|
|
|
+ private final List<JavaMailSenderImpl> senderList;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 初始化 sender
|
|
|
|
+ */
|
|
|
|
+ @PostConstruct
|
|
|
|
+ public void buildMailSender() {
|
|
|
|
+ List<MailConfig.MailProperties> mailConfigs = mailConfig.getConfigs();
|
|
|
|
+ log.info("初始化MailSender...");
|
|
|
|
+ mailConfigs.forEach(mailProperties -> {
|
|
|
|
+ // 邮件发送者
|
|
|
|
+ JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
|
|
|
|
+ javaMailSender.setDefaultEncoding(mailProperties.getDefaultEncoding());
|
|
|
|
+ javaMailSender.setHost(mailProperties.getHost());
|
|
|
|
+ javaMailSender.setPort(mailProperties.getPort());
|
|
|
|
+ javaMailSender.setProtocol(mailProperties.getProtocol());
|
|
|
|
+ javaMailSender.setUsername(mailProperties.getUsername());
|
|
|
|
+ javaMailSender.setPassword(mailProperties.getPassword());
|
|
|
|
+ // 配置smtp相关属性
|
|
|
|
+ Properties properties = new Properties();
|
|
|
|
+ properties.setProperty("mail.smtp.auth", mailProperties.getAuth());
|
|
|
|
+ properties.setProperty("mail.smtp.ssl.enable", mailProperties.getSSLEnable());
|
|
|
|
+ properties.setProperty("mail.smtp.ssl.required", mailProperties.getSSLRequired());
|
|
|
|
+ javaMailSender.setJavaMailProperties(properties);
|
|
|
|
+ // 添加数据
|
|
|
|
+ senderList.add(javaMailSender);
|
|
|
|
+ });
|
|
|
|
+ log.info("初始化MailSender成功");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取MailSender
|
|
|
|
+ *
|
|
|
|
+ * @return CustomMailSender
|
|
|
|
+ */
|
|
|
|
+ public JavaMailSenderImpl getSenderByName(String username) {
|
|
|
|
+ // 判断MailSender是否为空
|
|
|
|
+ if (senderList.isEmpty()) {
|
|
|
|
+ buildMailSender();
|
|
|
|
+ }
|
|
|
|
+ // 返回指定邮箱地址的MailSender
|
|
|
|
+ return senderList.stream()
|
|
|
|
+ .filter(sender -> username.equals(sender.getUsername()))
|
|
|
|
+ .findFirst()
|
|
|
|
+ .orElse(null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 清理 sender
|
|
|
|
+ * TODO: 后面如果改成数据库动态加载邮箱配置的话可以用clear重新加载配置
|
|
|
|
+ */
|
|
|
|
+ public void clear() {
|
|
|
|
+ senderList.clear();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|