24282 2 жил өмнө
parent
commit
f8a4a78772

+ 2 - 2
pom.xml

@@ -83,13 +83,13 @@
         <dependency>
         <dependency>
             <groupId>com.huaweicloud</groupId>
             <groupId>com.huaweicloud</groupId>
             <artifactId>esdk-obs-java</artifactId>
             <artifactId>esdk-obs-java</artifactId>
-            <version>3.19.7</version>
+            <version>3.22.12</version>
         </dependency>
         </dependency>
 
 
         <dependency>
         <dependency>
             <groupId>com.squareup.okio</groupId>
             <groupId>com.squareup.okio</groupId>
             <artifactId>okio</artifactId>
             <artifactId>okio</artifactId>
-            <version>2.8.0</version>
+            <version>3.3.0</version>
         </dependency>
         </dependency>
 
 
     </dependencies>
     </dependencies>

+ 23 - 9
src/main/java/com/fjhx/email/service/impl/MailServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.email.service.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.email.config.base.BaseEntity;
 import com.fjhx.email.config.base.BaseEntity;
@@ -280,11 +281,20 @@ public class MailServiceImpl implements IMailService {
             setTextAndAttachmentFuture.join();
             setTextAndAttachmentFuture.join();
 
 
             // 保存内容
             // 保存内容
-            executor.execute(() -> saveMessageDetail(messageId, messageDetailVo, type));
+            executor.execute(() -> {
+
+                // 关闭连接
+                try {
+                    ImapUtil.closeFolder(folder);
+                    ImapUtil.closeStore(store);
+                } catch (Exception e) {
+                    log.error("关闭链接失败");
+                }
+
+                saveMessageDetail(messageId, messageDetailVo, type);
+
+            });
 
 
-            // 关闭连接
-            ImapUtil.closeFolder(folder);
-            ImapUtil.closeStore(store);
         }
         }
 
 
         // copy一份数据,防止多线程下把文件路径前缀保存到数据库中
         // copy一份数据,防止多线程下把文件路径前缀保存到数据库中
@@ -310,11 +320,15 @@ public class MailServiceImpl implements IMailService {
             );
             );
 
 
             for (MailFolderInfo mailFolderInfo : mailboxInfo.getMailFolderInfoList()) {
             for (MailFolderInfo mailFolderInfo : mailboxInfo.getMailFolderInfoList()) {
-                IMAPFolder folder = (IMAPFolder) store.getFolder(mailFolderInfo.getName());
-                folder.open(Folder.READ_WRITE);
-                int unreadMessageCount = folder.getUnreadMessageCount();
-                mailFolderInfo.setUnreadMessageCount(unreadMessageCount);
-                ImapUtil.closeFolder(folder);
+                String name = mailFolderInfo.getName();
+                if (StrUtil.equalsAnyIgnoreCase(name, "inbox")) {
+                    IMAPFolder folder = (IMAPFolder) store.getFolder(name);
+                    folder.open(Folder.READ_WRITE);
+                    int unreadMessageCount = folder.getUnreadMessageCount();
+                    mailFolderInfo.setUnreadMessageCount(unreadMessageCount);
+                    ImapUtil.closeFolder(folder);
+                    break;
+                }
             }
             }
 
 
             ImapUtil.closeStore(store);
             ImapUtil.closeStore(store);

+ 2 - 2
src/main/java/com/fjhx/email/utils/email/ImapUtil.java

@@ -33,12 +33,12 @@ public class ImapUtil {
         properties.put("mail.imap.connectiontimeout", 1000 * 60);
         properties.put("mail.imap.connectiontimeout", 1000 * 60);
 
 
         // 套接字读取超时值(毫秒)。此超时由java.net.Socket实现。默认是无限超时。
         // 套接字读取超时值(毫秒)。此超时由java.net.Socket实现。默认是无限超时。
-        properties.put("mail.imap.timeout", 1000 * 60);
+        properties.put("mail.imap.timeout", 1000 * 60 * 2);
 
 
         // 套接字写超时值,单位为毫秒。此超时是通过使用java.util.concurrent实现的。
         // 套接字写超时值,单位为毫秒。此超时是通过使用java.util.concurrent实现的。
         // ScheduledExecutorService每个连接,调度线程在超时过期时关闭套接字。
         // ScheduledExecutorService每个连接,调度线程在超时过期时关闭套接字。
         // 因此,使用此超时的开销是每个连接一个线程。默认是无限超时。
         // 因此,使用此超时的开销是每个连接一个线程。默认是无限超时。
-        properties.put("mail.imap.writetimeout", 1000 * 60);
+        properties.put("mail.imap.writetimeout", 1000 * 60 * 2);
 
 
         session = Session.getInstance(properties);
         session = Session.getInstance(properties);
 
 

+ 1 - 1
src/main/resources/application-abroad.yml

@@ -7,7 +7,7 @@ spring:
 
 
 mail:
 mail:
   # 至少要等待多少秒才会开启下一轮邮件同步
   # 至少要等待多少秒才会开启下一轮邮件同步
-  minWaitingTime: 45
+  minWaitingTime: 30
   # 多少分钟没同步完成则开启下一轮同步
   # 多少分钟没同步完成则开启下一轮同步
   awaitTimeout: 5
   awaitTimeout: 5
   # 初始化同步天数
   # 初始化同步天数

+ 1 - 1
src/main/resources/application-dev.yml

@@ -7,7 +7,7 @@ spring:
 
 
 mail:
 mail:
   # 至少要等待多少秒才会开启下一轮邮件同步
   # 至少要等待多少秒才会开启下一轮邮件同步
-  minWaitingTime: 45
+  minWaitingTime: 30
   # 多少分钟没同步完成则开启下一轮同步
   # 多少分钟没同步完成则开启下一轮同步
   awaitTimeout: 5
   awaitTimeout: 5
   # 初始化同步天数
   # 初始化同步天数

+ 1 - 1
src/main/resources/application-prod.yml

@@ -7,7 +7,7 @@ spring:
 
 
 mail:
 mail:
   # 至少要等待多少秒才会开启下一轮邮件同步
   # 至少要等待多少秒才会开启下一轮邮件同步
-  minWaitingTime: 45
+  minWaitingTime: 30
   # 多少分钟没同步完成则开启下一轮同步
   # 多少分钟没同步完成则开启下一轮同步
   awaitTimeout: 5
   awaitTimeout: 5
   # 初始化同步天数
   # 初始化同步天数

+ 1 - 1
src/main/resources/application-test.yml

@@ -7,7 +7,7 @@ spring:
 
 
 mail:
 mail:
   # 至少要等待多少秒才会开启下一轮邮件同步
   # 至少要等待多少秒才会开启下一轮邮件同步
-  minWaitingTime: 45
+  minWaitingTime: 30
   # 多少分钟没同步完成则开启下一轮同步
   # 多少分钟没同步完成则开启下一轮同步
   awaitTimeout: 5
   awaitTimeout: 5
   # 初始化同步天数
   # 初始化同步天数