浏览代码

feat:添加邮箱消息通知

荭琪枫 2 年之前
父节点
当前提交
2372a4fc6f

+ 4 - 0
iot-common/iot-message-notify/pom.xml

@@ -22,6 +22,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-mail</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.projectlombok</groupId>

+ 19 - 0
iot-common/iot-message-notify/src/main/java/cc/iotkit/message/config/VertxManager.java

@@ -0,0 +1,19 @@
+/*
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 奇特物联 2021-2022 All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed 未经许可不能去掉「奇特物联」相关版权
+ * +----------------------------------------------------------------------
+ * | Author: xw2sy@163.com
+ * +----------------------------------------------------------------------
+ */
+package cc.iotkit.message.config;
+
+import io.vertx.core.Vertx;
+
+public enum VertxManager {
+    INSTANCE;
+    public Vertx getVertx() {
+        return Vertx.vertx();
+    }
+}

+ 9 - 12
iot-common/iot-message-notify/src/main/java/cc/iotkit/message/notify/DingTalkEventListener.java → iot-common/iot-message-notify/src/main/java/cc/iotkit/message/listener/DingTalkEventListener.java

@@ -1,8 +1,9 @@
-package cc.iotkit.message.notify;
+package cc.iotkit.message.listener;
 
+import cc.iotkit.message.config.VertxManager;
 import cc.iotkit.message.model.DingTalkMessage;
 import cc.iotkit.message.model.Message;
-import io.vertx.core.Vertx;
+import cc.iotkit.message.notify.EventListener;
 import io.vertx.ext.web.client.WebClient;
 import lombok.extern.slf4j.Slf4j;
 
@@ -12,23 +13,19 @@ import lombok.extern.slf4j.Slf4j;
  * description:
  **/
 @Slf4j
-public class DingTalkEventListener implements EventListener{
+public class DingTalkEventListener implements EventListener {
     private String baseUrl = "https://oapi.dingtalk.com/robot/send?access_token=%s";
+
     @Override
     public void doEvent(Message message) {
-        WebClient client = WebClient.create(Vertx.vertx());
+        WebClient client = WebClient.create(VertxManager.INSTANCE.getVertx());
         String url = String.format(baseUrl, message.getKey());
         DingTalkMessage qyWechatMessage = DingTalkMessage.builder()
                 .msgtype("text")
                 .text(DingTalkMessage.MessageContent.builder().content(message.getContent()).build())
                 .build();
-        client.post(url).sendJson(qyWechatMessage, rs -> {
-            if (rs.succeeded()) {
-                log.info("发送成功.");
-            }
-            if (rs.failed()) {
-                log.info("发送失败.");
-            }
-        });
+        client.post(url).sendJson(qyWechatMessage)
+                .onSuccess(response -> log.info("Received response with status code" + response.statusCode()))
+                .onFailure(err -> log.error("Something went wrong " + err.getMessage()));
     }
 }

+ 50 - 0
iot-common/iot-message-notify/src/main/java/cc/iotkit/message/listener/EmailEventListener.java

@@ -0,0 +1,50 @@
+package cc.iotkit.message.listener;
+
+import cc.iotkit.message.model.EmailConfig;
+import cc.iotkit.message.model.Message;
+import cc.iotkit.message.notify.EventListener;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
+import org.springframework.mail.javamail.MimeMessageHelper;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.util.Properties;
+
+/**
+ * author: 石恒
+ * date: 2023-05-08 15:09
+ * description:
+ **/
+@Slf4j
+public class EmailEventListener implements EventListener {
+
+    @Override
+    public void doEvent(Message message) {
+        EmailConfig emailConfig = new EmailConfig();
+        JavaMailSenderImpl jms = new JavaMailSenderImpl();
+        jms.setHost(emailConfig.getHost());
+        jms.setUsername(emailConfig.getUserName());
+        jms.setPassword(emailConfig.getPassWord());
+        jms.setDefaultEncoding("utf-8");
+        Properties p = new Properties();
+        p.setProperty("mail.smtp.auth", "true");
+        jms.setJavaMailProperties(p);
+        MimeMessage mimeMessage = jms.createMimeMessage();
+        try {
+            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
+            //收件人
+            String[] split = emailConfig.getTo().split(",");
+            messageHelper.setTo(split);
+            //标题
+            messageHelper.setSubject(emailConfig.getTitle());
+            //内容
+            messageHelper.setText(emailConfig.getContent(), true);
+            //发件人
+            messageHelper.setFrom(emailConfig.getFrom());
+            jms.send(mimeMessage);
+        } catch (MessagingException e) {
+            log.error("发送邮件失败.", e);
+        }
+    }
+}

+ 3 - 2
iot-common/iot-message-notify/src/main/java/cc/iotkit/message/notify/MessageEventListener.java → iot-common/iot-message-notify/src/main/java/cc/iotkit/message/listener/MessageEventListener.java

@@ -1,13 +1,14 @@
-package cc.iotkit.message.notify;
+package cc.iotkit.message.listener;
 
 import cc.iotkit.message.model.Message;
+import cc.iotkit.message.notify.EventListener;
 
 /**
  * author: 石恒
  * date: 2023-05-08 15:09
  * description:
  **/
-public class MessageEventListener implements EventListener{
+public class MessageEventListener implements EventListener {
 
     @Override
     public void doEvent(Message message) {

+ 7 - 11
iot-common/iot-message-notify/src/main/java/cc/iotkit/message/notify/QyWechatEventListener.java → iot-common/iot-message-notify/src/main/java/cc/iotkit/message/listener/QyWechatEventListener.java

@@ -1,8 +1,9 @@
-package cc.iotkit.message.notify;
+package cc.iotkit.message.listener;
 
+import cc.iotkit.message.config.VertxManager;
 import cc.iotkit.message.model.Message;
 import cc.iotkit.message.model.QyWechatMessage;
-import io.vertx.core.Vertx;
+import cc.iotkit.message.notify.EventListener;
 import io.vertx.ext.web.client.WebClient;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
@@ -20,19 +21,14 @@ public class QyWechatEventListener implements EventListener {
 
     @Override
     public void doEvent(Message message) {
-        WebClient client = WebClient.create(Vertx.vertx());
+        WebClient client = WebClient.create(VertxManager.INSTANCE.getVertx());
         String url = String.format(baseUrl, message.getKey());
         QyWechatMessage qyWechatMessage = QyWechatMessage.builder()
                 .msgtype("text")
                 .text(QyWechatMessage.MessageContent.builder().content(message.getContent()).build())
                 .build();
-        client.post(url).sendJson(qyWechatMessage, rs -> {
-            if (rs.succeeded()) {
-                log.info("发送成功.");
-            }
-            if (rs.failed()) {
-                log.info("发送失败.");
-            }
-        });
+        client.post(url).sendJson(qyWechatMessage)
+                .onSuccess(response -> log.info("Received response with status code" + response.statusCode()))
+                .onFailure(err -> log.error("Something went wrong " + err.getMessage()));
     }
 }

+ 21 - 0
iot-common/iot-message-notify/src/main/java/cc/iotkit/message/model/EmailConfig.java

@@ -0,0 +1,21 @@
+package cc.iotkit.message.model;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * author: 石恒
+ * date: 2023-05-08 15:58
+ * description:
+ **/
+@Data
+public class EmailConfig implements Serializable {
+    private String host;
+    private String userName;
+    private String passWord;
+    private String from;
+    private String to;
+    private String title;
+    private String content;
+}

+ 3 - 0
iot-common/iot-message-notify/src/main/java/cc/iotkit/message/model/EmailMessage.java

@@ -1,5 +1,7 @@
 package cc.iotkit.message.model;
 
+import lombok.Data;
+
 import java.io.Serializable;
 
 /**
@@ -7,5 +9,6 @@ import java.io.Serializable;
  * date: 2023-05-08 15:58
  * description:
  **/
+@Data
 public class EmailMessage implements Serializable {
 }

+ 1 - 0
iot-common/iot-message-notify/src/main/java/cc/iotkit/message/model/Message.java

@@ -11,4 +11,5 @@ import lombok.Data;
 public class Message {
     private String key;
     private String content;
+    private Long channelId;
 }