1
0
Pārlūkot izejas kodu

feat:邮件解析-邮件增加发送方邮箱地址字段

mozuwen 7 mēneši atpakaļ
vecāks
revīzija
66cbe6f473

+ 2 - 2
service-base/src/main/resources/mapper/EmailParseInfoMapper.xml

@@ -19,9 +19,9 @@
 
 
     <insert id="insert" parameterType="com.simuwang.base.pojo.dos.EmailParseInfoDO" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
-        insert into PPW_EMAIL.email_parse_info(email, email_date, parse_date, email_title, email_type, parse_status,
+        insert into PPW_EMAIL.email_parse_info(email, sender_email, email_date, parse_date, email_title, email_type, parse_status,
                                      isvalid, creatorid, createtime, updaterid, updatetime)
-        values (#{itemDo.email}, #{itemDo.emailDate}, #{itemDo.parseDate}, #{itemDo.emailTitle}, #{itemDo.emailType}, #{itemDo.parseStatus},
+        values (#{itemDo.email}, #{itemDo.senderEmail}, #{itemDo.emailDate}, #{itemDo.parseDate}, #{itemDo.emailTitle}, #{itemDo.emailType}, #{itemDo.parseStatus},
                 #{itemDo.isvalid}, #{itemDo.creatorId}, #{itemDo.createTime}, #{itemDo.updaterId}, #{itemDo.updateTime})
     </insert>
 

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

@@ -18,10 +18,7 @@ import com.simuwang.base.pojo.dos.*;
 import com.simuwang.base.pojo.dto.EmailContentInfoDTO;
 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.*;
 import jakarta.mail.internet.MimeMultipart;
 import jakarta.mail.search.ComparisonTerm;
 import jakarta.mail.search.ReceivedDateTerm;
@@ -34,6 +31,8 @@ import org.springframework.stereotype.Service;
 import java.io.File;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -495,7 +494,7 @@ public class EmailParseService {
                 if (isNotParseConditionSatisfied) {
                     continue;
                 }
-                senderEmail = message.getFrom()[0].toString();
+                senderEmail = getSenderEmail(message.getFrom());
                 emailType = EmailUtil.getEmailTypeBySubject(message.getSubject(), emailTypeMap);
                 String emailDateStr = DateUtil.format(emailDate, DateConst.YYYY_MM_DD_HH_MM_SS);
                 if (emailType == null) {
@@ -543,6 +542,22 @@ public class EmailParseService {
         return emailMessageMap;
     }
 
+    private String getSenderEmail(Address[] senderAddress) {
+        if (senderAddress == null || senderAddress.length == 0) {
+            return null;
+        }
+        // 此时的address是含有编码(MIME编码方式)后的文本和实际的邮件地址
+        String address = senderAddress[0].toString();
+
+        // 正则表达式匹配邮件地址
+        Pattern pattern = Pattern.compile("<(\\S+)>");
+        Matcher matcher = pattern.matcher(address);
+        if (matcher.find()) {
+            return matcher.group(1);
+        }
+        return null;
+    }
+
     private Message[] getEmailMessage(Folder folder, String protocol, Date startDate) {
         Message[] messages;
         try {