|
@@ -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 {
|