From 9a4b149fc625a8284af1101329d60889b7ba9984 Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期三, 01 十一月 2023 17:30:32 +0800
Subject: [PATCH] 邮件发送失败处理

---
 src/main/java/com/whyc/service/MailService.java |   67 +++++++++++++++++++++++++++------
 1 files changed, 54 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/whyc/service/MailService.java b/src/main/java/com/whyc/service/MailService.java
index 5973762..e9e3780 100644
--- a/src/main/java/com/whyc/service/MailService.java
+++ b/src/main/java/com/whyc/service/MailService.java
@@ -2,6 +2,8 @@
 
 import com.whyc.constant.UserOperation;
 import com.whyc.dto.MailDTO;
+import com.whyc.dto.Response;
+import com.whyc.pojo.MailQueue;
 import com.whyc.util.ActionUtil;
 import com.whyc.util.MailUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -9,6 +11,9 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.mail.MessagingException;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.LinkedList;
 import java.util.List;
 
 @Service
@@ -20,23 +25,59 @@
     @Autowired
     private DocLogService logService;
 
+    @Autowired
+    private MailQueueService mailQueueService;
+
     @Transactional
-    public void sendMail(MailDTO mailDTO) throws MessagingException {
+    public Response sendMail(MailDTO mailDTO) {
         Long uId = ActionUtil.getUser().getId();
         String name=ActionUtil.getUser().getName();
-        mailUtil.sendMailBatch(name,mailDTO.getMailList(),mailDTO.getTitle(),mailDTO.getContent());
-        //鏃ュ織
         StringBuilder mailUserStr = new StringBuilder();
-        List<String> mailList = mailDTO.getMailList();
-        for (int i = 0; i < mailList.size(); i++) {
-            if(i==0){
-                mailUserStr.append(mailList.get(i));
-            }else{
-                mailUserStr.append(","+mailList.get(i));
-            }
-        }
+        try {
+            mailUtil.sendMailBatch(name,mailDTO.getMailList(),mailDTO.getTitle(),mailDTO.getContent());
 
-        String msgDetail = "鍙戦�佺粰閭"+mailUserStr+",鏍囬涓�:"+mailDTO.getTitle()+",鍐呭涓�:"+mailDTO.getContent();
-        logService.record(uId,name, UserOperation.TYPE_SEND_MAIL.getType(),"閭欢鍙戦��",msgDetail);
+            //鏃ュ織
+            List<String> mailList = mailDTO.getMailList();
+            for (int i = 0; i < mailList.size(); i++) {
+                if(i==0){
+                    mailUserStr.append(mailList.get(i));
+                }else{
+                    mailUserStr.append(","+mailList.get(i));
+                }
+            }
+
+            String msgDetail = "鍙戦�佺粰閭" + mailUserStr + ",鏍囬涓�:" + mailDTO.getTitle() + ",鍐呭涓�:" + mailDTO.getContent();
+            logService.record(uId, name, UserOperation.TYPE_SEND_MAIL.getType(), "閭欢鍙戦��", msgDetail);
+            return new Response().set(1,true,"鍙戦�佸畬鎴�");
+        } catch (MessagingException ex) { //閭欢鍙戦�佸紓甯�,瀛樺叆鏁版嵁搴撳緟閲嶆柊鍙戦�佸垪琛�
+            MailQueue queue = new MailQueue();
+            queue.setMails(mailUserStr.toString());
+            queue.setTitle(mailDTO.getTitle());
+            queue.setContent(mailDTO.getContent());
+            queue.setCreateTime(new Date());
+            queue.setSenderUserId(uId);
+            queue.setSenderUserName(name);
+            mailQueueService.add(queue);
+            return new Response().set(1,false,"鍙戦�佸け璐�,缃戠粶寮傚父,缃戠粶鎭㈠鍚庤嚜鍔ㄥ欢鏃跺彂閫�");
+        }
+    }
+
+    public void sendQueueMail(MailQueue queue) {
+        Long uId = queue.getSenderUserId();
+        String name = queue.getSenderUserName();
+
+        String mails = queue.getMails();
+        String[] mailSplits = mails.split(",");
+        List<String> mailList = new LinkedList<>(Arrays.asList(mailSplits));
+        try{
+            mailUtil.sendMailBatch(name,mailList,queue.getTitle(),queue.getContent());
+            //鍒犻櫎 鏁版嵁搴撻偖浠堕槦鍒楄〃涓� 宸茶鍙戦�佺殑閭欢璁板綍
+            mailQueueService.deleteById(queue.getId());
+            //鏃ュ織
+            String msgDetail = "鍙戦�佺粰閭" + mails + ",鏍囬涓�:" + queue.getTitle() + ",鍐呭涓�:" + queue.getContent();
+            logService.record(uId, name, UserOperation.TYPE_SEND_MAIL.getType(), "閭欢鍙戦��", msgDetail);
+        } catch (MessagingException ex) { //閭欢鍙戦�佸紓甯�
+            //System.out.println("閭欢鍙戦�佸紓甯�,鍚庣画浼氭寔缁彂閫佺洿鍒版垚鍔�");
+        }
     }
 }

--
Gitblit v1.9.1