修改获取邮件发送日期为空时、获取邮件接受时间
This commit is contained in:
parent
0fd138b175
commit
a0cff20da8
|
@ -2,14 +2,9 @@ package org.jeecg.modules.spectrum;
|
|||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.io.LineIterator;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jeecg.common.constant.RedisConstant;
|
||||
import org.jeecg.common.constant.StringConstant;
|
||||
import org.jeecg.common.email.EmailLogEvent;
|
||||
|
@ -17,23 +12,18 @@ import org.jeecg.common.email.EmailLogManager;
|
|||
import org.jeecg.common.email.EmailServiceManager;
|
||||
import org.jeecg.common.exception.DownloadEmailException;
|
||||
import org.jeecg.common.util.DateUtils;
|
||||
import org.jeecg.common.util.Md5Util;
|
||||
import org.jeecg.modules.common.SpectrumUtils;
|
||||
import org.jeecg.modules.email.EmailProperties;
|
||||
import org.jeecg.modules.enums.SpectrumSource;
|
||||
import org.jeecg.modules.exception.AnalySpectrumException;
|
||||
import org.jeecg.modules.file.FileOperation;
|
||||
import org.springframework.util.Base64Utils;
|
||||
|
||||
import javax.mail.Message;
|
||||
import javax.mail.MessagingException;
|
||||
import javax.mail.Session;
|
||||
import javax.mail.internet.MimeMessage;
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.util.Base64;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
|
||||
/**
|
||||
|
@ -41,6 +31,12 @@ import java.util.concurrent.CountDownLatch;
|
|||
*/
|
||||
@Slf4j
|
||||
public class SpectrumParsingActuator implements Runnable {
|
||||
/**
|
||||
* IMS2.0格式邮件判断条件
|
||||
*/
|
||||
private final static String EMAIL_BEGIN = "BEGIN IMS2.0";
|
||||
private final static String MSG_TYPE = "MSG_TYPE DATA";
|
||||
private final static String EMAIL_STOP = "STOP";
|
||||
|
||||
/**
|
||||
* 邮件对象
|
||||
|
@ -95,13 +91,10 @@ public class SpectrumParsingActuator implements Runnable{
|
|||
subject = emailServiceManager.getMailSubject(message, this.batchesCounter);
|
||||
|
||||
//解析之前先把邮件唯一信息存储到redis
|
||||
String messageId = ((MimeMessage) message).getMessageID();
|
||||
if (StrUtil.isEmpty(messageId)) {
|
||||
String subjectStr = message.getSubject().replace(" ", "_");
|
||||
String receivedStr = DateUtil.format(message.getReceivedDate(), DatePattern.NORM_DATETIME_MINUTE_PATTERN);
|
||||
messageId = subjectStr + StringConstant.UNDER_LINE + receivedStr;
|
||||
}
|
||||
receiveDate = DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss");
|
||||
String msgID = ((MimeMessage) message).getMessageID();
|
||||
String messageId = msgID == null ? emailServiceManager.getMessagesID(message, this.batchesCounter) : msgID;
|
||||
Date dateUtils = message.getReceivedDate() == null ? message.getSentDate() : message.getReceivedDate();
|
||||
receiveDate = DateUtils.formatDate(dateUtils, "yyyy-MM-dd HH:mm:ss");
|
||||
String emlName = subject + StringConstant.UNDER_LINE + receiveDate;
|
||||
String key = RedisConstant.EMAIL_MSG_ID + StringConstant.COLON + messageId;
|
||||
// spectrumServiceQuotes.getRedisUtil().set(key,emlName,expiryTime);
|
||||
|
@ -153,17 +146,19 @@ public class SpectrumParsingActuator implements Runnable{
|
|||
// 如果邮件内容校验失败(邮件内容不完整) 将错误邮件从eml移动到emlError
|
||||
if (Objects.nonNull(emlFile) && emlFile.exists()) {
|
||||
moveEmail(emlFile, key);
|
||||
throw new DownloadEmailException("邮件移走后手动抛出DownloadEmailException");
|
||||
throw new DownloadEmailException("邮件内容校验失败,邮件移走后手动抛出CheckMailContentException");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
//输出异常信息
|
||||
log.error("邮件处理异常{},邮件主题:{}:", e, subject);
|
||||
// todo 需要解决其他异常会进入if 删除邮件
|
||||
// 如果不是下载导致的失败 并且 下载成功,则删除下载的邮件对象
|
||||
if (!(e instanceof DownloadEmailException) && downloadFlag) {
|
||||
log.error("Catch Remove Email:" + subject + StringPool.UNDERSCORE + receiveDate + StringPool.UNDERSCORE);
|
||||
emailServiceManager.removeMail(message, batchesCounter);
|
||||
}
|
||||
//输出异常信息
|
||||
log.error("邮件处理异常{},邮件主题:{}:", e, subject);
|
||||
|
||||
} finally {
|
||||
try {
|
||||
EmailLogEvent expungeEvent = new EmailLogEvent(this.batchesCounter, Thread.currentThread().getId(), EmailLogManager.GS_TYPE_GET, EmailLogManager.DONE);
|
||||
|
@ -178,6 +173,7 @@ public class SpectrumParsingActuator implements Runnable{
|
|||
|
||||
/**
|
||||
* 校验邮件内容是否符合IMS2.0格式
|
||||
*
|
||||
* @param mailContent
|
||||
* @param subject
|
||||
* @param emlFile
|
||||
|
|
Loading…
Reference in New Issue
Block a user