GouGengquan пре 3 дана
родитељ
комит
407d0003f7

+ 14 - 0
biz-base/src/main/resources/application-local.yml

@@ -82,3 +82,17 @@ ueditor:
 posyspath:  /Users/wuwei/pageoffice
 
 
+# 配置邮件
+mail:
+  configs:
+    # 邮箱信息
+    - host: smtp.qq.com #host
+      port: 465 #端口
+      protocol: smtp #协议
+      username: xxxxxx@qq.com #邮箱
+      password: xxxxxx #密码或授权码
+      default-encoding: UTF-8
+      auth: true #smtp auth
+      SSL-enable: true #ssl加密是否开启
+      SSL-required: true #ssl加密是否必须
+    # 多个邮箱则以相同格式在添加一个信息在configs下

+ 41 - 0
biz-base/src/test/java/email/EmailTests.java

@@ -0,0 +1,41 @@
+package email;
+
+import com.dayou.BaseApplication;
+import com.dayou.configuration.MailSenderConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.util.Objects;
+
+@SpringBootTest(classes = BaseApplication.class)
+@RunWith(value = SpringJUnit4ClassRunner.class)
+public class EmailTests {
+
+    @Autowired
+    private MailSenderConfig senderConfig;
+
+    @Test
+    public void sendMail() {
+
+        JavaMailSenderImpl mailSender = senderConfig.getSenderByName("gougengquan@qq.com");
+
+        //创建SimpleMailMessage对象
+        SimpleMailMessage message = new SimpleMailMessage();
+        //邮件发送人
+        message.setFrom(Objects.requireNonNull(mailSender.getUsername()));
+        //邮件接收人
+        message.setTo("g2d134@163.com");
+        //邮件主题
+        message.setSubject("测试邮件");
+        //邮件内容
+        message.setText("测试邮件内容");
+        //发送邮件
+        mailSender.send(message);
+    }
+
+}

+ 5 - 0
common/pom.xml

@@ -229,6 +229,11 @@
             <groupId>org.jsoup</groupId>
             <artifactId>jsoup</artifactId>
         </dependency>
+        <!--mail依赖-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-mail</artifactId>
+        </dependency>
     </dependencies>
     <repositories>
         <repository>

+ 71 - 0
common/src/main/java/com/dayou/configuration/MailConfig.java

@@ -0,0 +1,71 @@
+package com.dayou.configuration;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 邮件配置类
+ * spring-boot-starter-mail默认只能配置一个Email信息, 考虑到以后可能多个邮件的情况, 这里换成自定义注入
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "mail")
+public class MailConfig {
+
+    private List<MailProperties> configs;
+
+    @Data
+    public static class MailProperties {
+
+        /**
+         * host
+         */
+        private String host;
+
+        /**
+         * 端口
+         */
+        private Integer port;
+
+        /**
+         * 协议
+         */
+        private String protocol;
+
+        /**
+         * 密码
+         */
+        private String username;
+
+        /**
+         * 密码
+         */
+        private String password;
+
+        /**
+         * 默认编码
+         */
+        private String defaultEncoding;
+
+        /**
+         * smtp auth
+         */
+        private String auth;
+
+        /**
+         * ssl加密是否开启
+         */
+        private String SSLEnable;
+
+        /**
+         * ssl加密是否必须
+         */
+        private String SSLRequired;
+
+    }
+
+}
+

+ 75 - 0
common/src/main/java/com/dayou/configuration/MailSenderConfig.java

@@ -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();
+    }
+
+}
+

+ 4 - 4
service/src/main/java/com/dayou/websocket/WebSocketConfig.java

@@ -27,8 +27,8 @@ public class WebSocketConfig extends ServerEndpointConfig.Configurator {
      * 注入ServerEndpointExporter,@Bean会自动注册使用@ServerEndpoint注解声明的websocket端点endpoint
      * @return
      */
-    @Bean
-    public ServerEndpointExporter serverEndpointExporter(){
-        return new ServerEndpointExporter();
-    }
+//    @Bean
+//    public ServerEndpointExporter serverEndpointExporter(){
+//        return new ServerEndpointExporter();
+//    }
 }