فهرست منبع

feat:邮件解析-修改连接邮箱使用的store对象及去掉多余依赖

mozuwen 7 ماه پیش
والد
کامیت
771de33ecc

+ 0 - 4
service-base/pom.xml

@@ -132,10 +132,6 @@
             <version>2.0.1</version>
         </dependency>
         <dependency>
-            <groupId>org.eclipse.angus</groupId>
-            <artifactId>angus-mail</artifactId>
-        </dependency>
-        <dependency>
             <groupId>commons-fileupload</groupId>
             <artifactId>commons-fileupload</artifactId>
             <version>1.5</version>

+ 2 - 2
service-base/src/main/java/com/simuwang/base/common/util/EmailUtil.java

@@ -9,6 +9,7 @@ import cn.hutool.extra.mail.JakartaUserPassAuthenticator;
 import com.simuwang.base.common.conts.DateConst;
 import com.simuwang.base.pojo.dto.EmailContentInfoDTO;
 import com.simuwang.base.pojo.dto.MailboxInfoDTO;
+import com.sun.mail.imap.IMAPStore;
 import jakarta.mail.Message;
 import jakarta.mail.MessagingException;
 import jakarta.mail.Session;
@@ -17,7 +18,6 @@ import jakarta.mail.internet.MimeBodyPart;
 import jakarta.mail.internet.MimeMultipart;
 import jakarta.mail.internet.MimeUtility;
 import org.apache.commons.io.FileUtils;
-import org.eclipse.angus.mail.imap.IMAPSSLStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -200,7 +200,7 @@ public class EmailUtil {
         try {
             String protocol = mailboxInfoDTO.getProtocol().equals(IMAP) ? "imaps" : "pop3";
             if (mailboxInfoDTO.getProtocol().contains(IMAP)) {
-                IMAPSSLStore imapStore = (IMAPSSLStore) session.getStore(protocol);
+                IMAPStore imapStore = (IMAPStore) session.getStore(protocol);
                 imapStore.connect(mailboxInfoDTO.getHost(), mailboxInfoDTO.getAccount(), mailboxInfoDTO.getPassword());
                 // 网易邮箱需要带上身份标识,详情请看:https://www.hmail163.com/content/?404.html
                 Map<String, String> clientParams = new HashMap<>(2);

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

@@ -465,9 +465,9 @@ 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();
+         SearchTerm startDateTerm = new ReceivedDateTerm(ComparisonTerm.GE, startDate);
+         Message[] messages = folder.search(startDateTerm);
+       // Message[] messages = folder.getMessages();
         Map<String, List<EmailContentInfoDTO>> emailMessageMap = MapUtil.newHashMap();
         for (Message message : messages) {
             List<EmailContentInfoDTO> emailContentInfoDTOList = CollUtil.newArrayList();
@@ -476,8 +476,7 @@ public class EmailParseService {
             String senderEmail;
             try {
                 Date emailDate = message.getSentDate();
-                boolean isParseConditionSatisfied = emailDate == null || (endDate == null && emailDate.compareTo(startDate) > 0)
-                        || emailDate.compareTo(startDate) < 0 || (endDate != null && emailDate.compareTo(endDate) > 0) || (startDate != null && emailDate.compareTo(startDate) < 0);
+                boolean isParseConditionSatisfied = emailDate == null || (endDate == null && emailDate.compareTo(startDate) > 0) || (startDate != null && emailDate.compareTo(startDate) < 0);
                 if (isParseConditionSatisfied) {
                     continue;
                 }

+ 9 - 1
service-deploy/src/main/test/java/com/simuwang/datadaq/DataTrusteeApplicationTests.java

@@ -35,9 +35,17 @@ class DataTrusteeApplicationTests {
         emailInfoDTO.setHost("imap.exmail.qq.com");
         emailInfoDTO.setPort("993");
         emailInfoDTO.setProtocol("imap");
+
+        emailInfoDTO.setAccount("jjpj_test");
+        emailInfoDTO.setPassword("shzq#919");
+//        emailInfoDTO.setAccount("fofservice@simuwang.com");
+//        emailInfoDTO.setPassword("cJH@2021");
+        emailInfoDTO.setHost("mail.shzq.com");
+        emailInfoDTO.setPort("993");
+        emailInfoDTO.setProtocol("imap");
         Map<Integer, List<String>> emailTypeMap = MapUtil.newHashMap();
         emailTypeMap.put(1, List.of("净值"));
-        Date startDate = DateUtil.parse("2024-09-19 09:20:00", DateConst.YYYY_MM_DD_HH_MM_SS);
+        Date startDate = DateUtil.parse("2024-09-19 11:20:00", DateConst.YYYY_MM_DD_HH_MM_SS);
         Date endDate = DateUtil.parse("2024-09-19 16:00:00", DateConst.YYYY_MM_DD_HH_MM_SS);
         try {
             emailParseService.parseEmail(emailInfoDTO, startDate, endDate);