Przeglądaj źródła

feat:邮件解析-支持按照不同协议获取邮箱邮件

mozuwen 7 miesięcy temu
rodzic
commit
3e197c06f1

+ 22 - 4
service-daq/src/main/java/com/simuwang/daq/service/EmailParseService.java

@@ -20,6 +20,7 @@ import com.simuwang.base.pojo.dto.EmailFundNavDTO;
 import com.simuwang.base.pojo.dto.MailboxInfoDTO;
 import jakarta.mail.Folder;
 import jakarta.mail.Message;
+import jakarta.mail.MessagingException;
 import jakarta.mail.Store;
 import jakarta.mail.internet.MimeMultipart;
 import jakarta.mail.search.ComparisonTerm;
@@ -464,10 +465,11 @@ public class EmailParseService {
         // 默认读取收件箱的邮件
         Folder folder = store.getFolder("INBOX");
         folder.open(Folder.READ_ONLY);
-        // 获取邮件日期大于等于startDate的邮件(搜索条件只支持按天)
-//         SearchTerm startDateTerm = new ReceivedDateTerm(ComparisonTerm.GE, startDate);
-//         Message[] messages = folder.search(startDateTerm);
-        Message[] messages = folder.getMessages();
+        Message[] messages = getEmailMessage(folder, mailboxInfoDTO.getProtocol(), startDate);
+        if (messages == null || messages.length == 0) {
+            log.info("获取不到邮件 -> 邮箱信息:{},开始时间:{},结束时间:{}", mailboxInfoDTO, startDate, endDate);
+            return MapUtil.newHashMap();
+        }
         Map<String, List<EmailContentInfoDTO>> emailMessageMap = MapUtil.newHashMap();
         for (Message message : messages) {
             List<EmailContentInfoDTO> emailContentInfoDTOList = CollUtil.newArrayList();
@@ -528,4 +530,20 @@ public class EmailParseService {
         return emailMessageMap;
     }
 
+    private Message[] getEmailMessage(Folder folder, String protocol, Date startDate) {
+        Message[] messages;
+        try {
+            if (protocol.contains("imap")) {
+                // 获取邮件日期大于等于startDate的邮件(搜索条件只支持按天)
+                SearchTerm startDateTerm = new ReceivedDateTerm(ComparisonTerm.GE, startDate);
+                messages = folder.search(startDateTerm);
+            } else {
+                messages = folder.getMessages();
+            }
+        } catch (MessagingException e) {
+            throw new RuntimeException(e);
+        }
+        return messages;
+    }
+
 }