修改获取邮件Message-ID的方式,获取不到Message-ID时换成主题+接收时间或者时发送时间

This commit is contained in:
duwenyuan 2025-06-30 10:28:54 +08:00
parent 9546f610b9
commit 25bf3542b5

View File

@ -1,9 +1,12 @@
package org.jeecg.modules;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ArrayUtils;
import org.jeecg.common.constant.StringConstant;
import org.jeecg.common.email.EmailLogManager;
import org.jeecg.common.email.EmailServiceManager;
import org.jeecg.common.properties.TaskProperties;
@ -14,6 +17,7 @@ import org.jeecg.modules.spectrum.SpectrumLogManager;
import org.jeecg.modules.spectrum.SpectrumParsingActuator;
import org.jeecg.modules.spectrum.SpectrumServiceQuotes;
import org.springframework.scheduling.concurrent.CustomizableThreadFactory;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
@ -33,11 +37,14 @@ public class EmailParsingActuator extends Thread{
private SpectrumServiceQuotes spectrumServiceQuotes;
private EmailCounter emailCounter;
private Date systemStartupTime;
@Setter @Getter
@Setter
@Getter
private boolean isStop;
@Setter @Getter
@Setter
@Getter
private boolean threadSleep;
@Setter @Getter
@Setter
@Getter
private Date stopTime;
public void init(EmailProperties emailProperties, SpectrumServiceQuotes spectrumServiceQuotes,
@ -90,12 +97,19 @@ public class EmailParsingActuator extends Thread{
if (ArrayUtils.isNotEmpty(messages)) {
//检验获取的邮件是否在之前删除失败列表中若在直接调用邮件API删除并且此次数组里元素也删除
for(int i=messages.length-1;i>=0;i--){
String messageId = null;
if (null == messages[i].getHeader("Message-ID")) {
messages = ArrayUtils.remove(messages, i);
continue;
// 有些邮箱拿不到 message-ID换成主题+接收时间
String subject = messages[i].getSubject().replace(" ", StringConstant.UNDER_LINE);
Date date = messages[i].getReceivedDate() == null ? messages[i].getSentDate() : messages[i].getReceivedDate();
String receivedStr = DateUtil.format(date, DatePattern.NORM_DATETIME_MINUTE_PATTERN);
messageId = subject + StringConstant.UNDER_LINE + receivedStr;
// messages = ArrayUtils.remove(messages, i);
// continue;
}else {
messageId = ((MimeMessage) messages[i]).getMessageID();
}
if (!messages[i].isExpunged()){
String messageId = ((MimeMessage) messages[i]).getMessageID();
final boolean exist = emailServiceManager.check(messages[i],messageId);
messageIds.add(messageId);
if (exist) {