|
@@ -20,6 +20,7 @@ import com.simuwang.base.pojo.dto.EmailFundNavDTO;
|
|
import com.simuwang.base.pojo.dto.MailboxInfoDTO;
|
|
import com.simuwang.base.pojo.dto.MailboxInfoDTO;
|
|
import jakarta.mail.Folder;
|
|
import jakarta.mail.Folder;
|
|
import jakarta.mail.Message;
|
|
import jakarta.mail.Message;
|
|
|
|
+import jakarta.mail.MessagingException;
|
|
import jakarta.mail.Store;
|
|
import jakarta.mail.Store;
|
|
import jakarta.mail.internet.MimeMultipart;
|
|
import jakarta.mail.internet.MimeMultipart;
|
|
import jakarta.mail.search.ComparisonTerm;
|
|
import jakarta.mail.search.ComparisonTerm;
|
|
@@ -464,10 +465,11 @@ public class EmailParseService {
|
|
// 默认读取收件箱的邮件
|
|
// 默认读取收件箱的邮件
|
|
Folder folder = store.getFolder("INBOX");
|
|
Folder folder = store.getFolder("INBOX");
|
|
folder.open(Folder.READ_ONLY);
|
|
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();
|
|
Map<String, List<EmailContentInfoDTO>> emailMessageMap = MapUtil.newHashMap();
|
|
for (Message message : messages) {
|
|
for (Message message : messages) {
|
|
List<EmailContentInfoDTO> emailContentInfoDTOList = CollUtil.newArrayList();
|
|
List<EmailContentInfoDTO> emailContentInfoDTOList = CollUtil.newArrayList();
|
|
@@ -528,4 +530,20 @@ public class EmailParseService {
|
|
return emailMessageMap;
|
|
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;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|