瀏覽代碼

fix:邮件是否有附件的逻辑判断优化

wangzaijun 2 周之前
父節點
當前提交
a90b471bb1

+ 9 - 9
mo-daq/src/main/java/com/smppw/modaq/application/task/ParseSchedulerTask.java

@@ -29,15 +29,15 @@ public class ParseSchedulerTask {
 
     @PostConstruct
     public void executeOnStartup() {
-//        try {
-//            // 定期报告从 其他文件夹/报告公告 文件夹获取邮件
-//            this.emailParseApiService.parseEmail(
-//                    DateUtil.parseDateTime("2025-06-03 18:40:00"),
-//                    DateUtil.parseDateTime("2025-06-03 19:56:00"),
-//                    ListUtil.of("其他文件夹/报告公告"), EmailTypeConst.REPORT_EMAIL_TYPES);
-//        } catch (Exception e) {
-//            logger.error(ExceptionUtil.getMessage(e));
-//        }
+        try {
+            // 定期报告从 其他文件夹/报告公告 文件夹获取邮件
+            this.emailParseApiService.parseEmail(
+                    DateUtil.parseDateTime("2025-06-06 23:50:00"),
+                    DateUtil.parseDateTime("2025-06-07 00:00:01"),
+                    ListUtil.of("其他文件夹/报告公告"), EmailTypeConst.REPORT_EMAIL_TYPES);
+        } catch (Exception e) {
+            logger.error(ExceptionUtil.getMessage(e));
+        }
 //
 //        try {
 //            // 确认函从 INBOX 文件夹获取邮件

+ 7 - 4
mo-daq/src/main/java/com/smppw/modaq/domain/service/EmailParseService.java

@@ -74,7 +74,8 @@ public class EmailParseService {
             "application/zip",
             "application/x-zip-compressed",
             "application/rar",
-            "application/x-rar-compressed"
+            "application/x-rar-compressed",
+            "application/octet-stream"
             // 按需添加其他类型...
     );
 
@@ -215,7 +216,7 @@ public class EmailParseService {
         }
 
         // 文件中的类型判断
-        if (emailType == null || !EmailTypeConst.SUPPORT_EMAIL_TYPES.contains(emailType)) {
+        if (emailType == null || !EmailTypeConst.SUPPORT_NO_OTHER_TYPES.contains(emailType)) {
             emailType = EmailUtil.getEmailTypeBySubject(emailContentInfoDTO.getFileName());
             emailContentInfoDTO.setEmailType(emailType);
         }
@@ -816,12 +817,14 @@ public class EmailParseService {
         String disposition = part.getDisposition();
         String contentType = part.getContentType();
 
-        boolean isAttachment = Part.ATTACHMENT.equalsIgnoreCase(disposition)
+        boolean attachmentFlag = StrUtil.endWithAny(fileName, ".zip", ".rar", ".pdf", ".png", ".jpg", ".docx");
+        boolean isAttachment = attachmentFlag
+                || Part.ATTACHMENT.equalsIgnoreCase(disposition)
                 || (contentType != null && attachmentMimePrefixes.stream().anyMatch(prefix ->
                 StrUtil.startWithIgnoreCase(contentType, prefix)
         ));
         if (!isAttachment) {
-            log.warn("邮件 {} 未检测到pdf/zip/rar类型的附件 (fileName={}, disposition={}, contentType={})",
+            log.warn("邮件 {} 未检测到pdf/zip/rar/png/jpg/docx类型的附件 (fileName={}, disposition={}, contentType={})",
                     subject, fileName, disposition, contentType);
             return;
         }

+ 2 - 2
mo-daq/src/test/java/com/smppw/modaq/MoDaqApplicationTests.java

@@ -38,8 +38,8 @@ public class MoDaqApplicationTests {
     @Test
     public void reportTest() {
         MailboxInfoDTO emailInfoDTO = this.buildMailbox("*@simuwang.com", "*");
-        Date startDate = DateUtil.parse("2025-06-06 15:28:00", DateConst.YYYY_MM_DD_HH_MM_SS);
-        Date endDate = DateUtil.parse("2025-06-06 17:05:00", DateConst.YYYY_MM_DD_HH_MM_SS);
+        Date startDate = DateUtil.parse("2025-06-07 10:30:00", DateConst.YYYY_MM_DD_HH_MM_SS);
+        Date endDate = DateUtil.parse("2025-06-07 17:05:00", DateConst.YYYY_MM_DD_HH_MM_SS);
         try {
             List<String> folderNames = ListUtil.list(false);
 //            folderNames.add("其他文件夹/报告公告");