修改邮件功能

master
bynt 1 year ago
parent 73a26a2e41
commit 19c8b1004f

@ -78,6 +78,7 @@ public class MailSourceTask {
/** /**
* *
*/ */
@SneakyThrows
@Scheduled(cron = "0 0/10 * * * ? ") @Scheduled(cron = "0 0/10 * * * ? ")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void receiveMail() { public void receiveMail() {
@ -85,93 +86,88 @@ public class MailSourceTask {
List<Message> list = MailUtil.readMailByIMAP List<Message> list = MailUtil.readMailByIMAP
(deliveryProperties.getEmailAddress(), deliveryProperties.getEmailPassword()); (deliveryProperties.getEmailAddress(), deliveryProperties.getEmailPassword());
if (CollUtil.isNotEmpty(list)) { if (CollUtil.isNotEmpty(list)) {
try { for (Message message : list) {
for (Message message : list) { // 获取未读的邮件内容 且与之对应
// 获取未读的邮件内容 且与之对应 if (deliveryProperties.getToEmailAddress().equalsIgnoreCase
if (deliveryProperties.getToEmailAddress().equalsIgnoreCase (MailUtil.getFrom((MimeMessage) message))) {
(MailUtil.getFrom((MimeMessage) message))) { String taskName = message.getSubject();
String taskName = message.getSubject(); Object objCache = redisUtils.get(taskName);
Object objCache = redisUtils.get(taskName); if (ObjectUtil.isNotNull(objCache)) {
if (ObjectUtil.isNotNull(objCache)) { continue;
continue; }
} // 设置十分钟缓存
// 设置十分钟缓存 redisUtils.set(taskName, taskName, DefaultNumberConstants.TEN_NUMBER, TimeUnit.MINUTES);
redisUtils.set(taskName, taskName, DefaultNumberConstants.TEN_NUMBER, TimeUnit.MINUTES); // 内容获取发送请求
// 内容获取发送请求 DeliveryRecord byTaskName = deliveryRecordService.findByTaskName(taskName);
DeliveryRecord byTaskName = deliveryRecordService.findByTaskName(taskName); if (ObjectUtil.isNotNull(byTaskName)
if (ObjectUtil.isNotNull(byTaskName) && byTaskName.getStatus() == DefaultNumberConstants.ZERO_NUMBER) {
&& byTaskName.getStatus() == DefaultNumberConstants.ZERO_NUMBER) { log.info("================ the receive mail taskName as {} ==============", taskName);
log.info("================ the receive mail taskName as {} ==============", taskName); Task task = new Task();
Task task = new Task(); Long taskId = byTaskName.getTaskId();
Long taskId = byTaskName.getTaskId(); CsvReader reader = CsvUtil.getReader();
CsvReader reader = CsvUtil.getReader(); List<String> tagList = Lists.newArrayList();
List<String> tagList = Lists.newArrayList(); List<String> phoneList = Lists.newArrayList();
List<String> phoneList = Lists.newArrayList(); List<String> decryptList = Lists.newArrayList();
List<String> decryptList = Lists.newArrayList(); // 解析附件内容并保存文件
// 解析附件内容并保存文件 String path = MailUtil.saveAttachMent
String path = MailUtil.saveAttachMent (message, deliveryProperties.getFileUrl());
(message, deliveryProperties.getFileUrl()); // 解压文件
// 解压文件 String unzipPath =
String unzipPath = CompressUtil.unzipFiles(deliveryProperties.getFileUrl(),
CompressUtil.unzipFiles(deliveryProperties.getFileUrl(), path, deliveryProperties.getZipPassword());
path, deliveryProperties.getZipPassword()); if (ObjectUtil.isNotNull(byTaskName.getType())) {
if (ObjectUtil.isNotNull(byTaskName.getType())) { if (byTaskName.getType() == DefaultNumberConstants.ONE_NUMBER
if (byTaskName.getType() == DefaultNumberConstants.ONE_NUMBER || byTaskName.getType() == DefaultNumberConstants.THREE_NUMBER) {
|| byTaskName.getType() == DefaultNumberConstants.THREE_NUMBER) { File file = new File(unzipPath);
File file = new File(unzipPath); File parseFile = Objects.requireNonNull
File parseFile = Objects.requireNonNull (file.listFiles())[DefaultNumberConstants.ZERO_NUMBER];
(file.listFiles())[DefaultNumberConstants.ZERO_NUMBER]; // 解析文件
// 解析文件 CsvData data = reader.read(parseFile);
CsvData data = reader.read(parseFile); CsvRow strings = data.getRows().get(DefaultNumberConstants.ZERO_NUMBER);
CsvRow strings = data.getRows().get(DefaultNumberConstants.ZERO_NUMBER); String tagStr = strings.get(DefaultNumberConstants.ONE_NUMBER);
String tagStr = strings.get(DefaultNumberConstants.ONE_NUMBER); // csv通配
// csv通配 data.getRows().forEach(clue -> {
data.getRows().forEach(clue -> { phoneList.add(clue.size() == DefaultNumberConstants.THREE_NUMBER
phoneList.add(clue.size() == DefaultNumberConstants.THREE_NUMBER ? clue.get(DefaultNumberConstants.TWO_NUMBER) : clue.get(DefaultNumberConstants.THREE_NUMBER));
? clue.get(DefaultNumberConstants.TWO_NUMBER) : clue.get(DefaultNumberConstants.THREE_NUMBER)); tagList.add(tagStr);
tagList.add(tagStr); });
}); // 去除重复
// 去除重复 List<String> phoneSets = Lists.newArrayList(Sets.newHashSet(phoneList));
List<String> phoneSets = Lists.newArrayList(Sets.newHashSet(phoneList)); log.info("=============== the phone list as {} ==================", phoneList.size());
log.info("=============== the phone list as {} ==================", phoneList.size()); // 集合分割
// 集合分割 List<List<String>> partitions = ListUtil.partition(phoneSets, DefaultNumberConstants.TWO_HUNDRED);
List<List<String>> partitions = ListUtil.partition(phoneSets, DefaultNumberConstants.TWO_HUNDRED); for (List<String> partition : partitions) {
for (List<String> partition : partitions) { String join = Joiner.on(StrPool.COMMA).skipNulls().join(partition);
String join = Joiner.on(StrPool.COMMA).skipNulls().join(partition); // 批量解析号码
// 批量解析号码 SecretResponseBean responseBean = DecryptPnoUtil.batchDecryptPno
SecretResponseBean responseBean = DecryptPnoUtil.batchDecryptPno (Base64.encode(StringUtils.substringBeforeLast(join, StrPool.COMMA)));
(Base64.encode(StringUtils.substringBeforeLast(join, StrPool.COMMA))); if (ObjectUtil.isNotNull(responseBean) && ObjectUtil.isNotNull(responseBean.getTels())) {
if (ObjectUtil.isNotNull(responseBean) && ObjectUtil.isNotNull(responseBean.getTels())) { String decodeStr = Base64.decodeStr(responseBean.getTels());
String decodeStr = Base64.decodeStr(responseBean.getTels()); String[] split = decodeStr.split(StrPool.COMMA);
String[] split = decodeStr.split(StrPool.COMMA); if (split.length > DefaultNumberConstants.ZERO_NUMBER) {
if (split.length > DefaultNumberConstants.ZERO_NUMBER) { decryptList.addAll(Lists.newArrayList(Arrays.asList(split)));
decryptList.addAll(Lists.newArrayList(Arrays.asList(split)));
}
} }
} }
// 剔除空值 }
decryptList = decryptList.stream().filter(StringUtils::isNotBlank).collect(Collectors.toList()); // 剔除空值
// 请求黑名单 decryptList = decryptList.stream().filter(StringUtils::isNotBlank).collect(Collectors.toList());
if (CollUtil.isNotEmpty(decryptList)) { // 请求黑名单
log.info("=================== the decryptList size as {} =====================", decryptList.size()); if (CollUtil.isNotEmpty(decryptList)) {
if (byTaskName.getType() == DefaultNumberConstants.ONE_NUMBER) { log.info("=================== the decryptList size as {} =====================", decryptList.size());
saveClue(taskName, byTaskName, task, taskId, tagList, decryptList, path, unzipPath); if (byTaskName.getType() == DefaultNumberConstants.ONE_NUMBER) {
} saveClue(taskName, byTaskName, task, taskId, tagList, decryptList, path, unzipPath);
if (byTaskName.getType() == DefaultNumberConstants.THREE_NUMBER) { }
downResource(taskName, tagList, decryptList, path, unzipPath); if (byTaskName.getType() == DefaultNumberConstants.THREE_NUMBER) {
} downResource(taskName, tagList, decryptList, path, unzipPath);
if (byTaskName.getType() == DefaultNumberConstants.TWO_NUMBER) { }
sendRequest(taskName, byTaskName, decryptList, path); if (byTaskName.getType() == DefaultNumberConstants.TWO_NUMBER) {
} sendRequest(taskName, byTaskName, decryptList, path);
} }
} }
} }
} }
} }
} }
} catch (Exception e) {
log.error("=================== the receive mail error message as {} ===========", e.getMessage());
throw new BadRequestException("接收邮件失败");
} }
} }
} }

Loading…
Cancel
Save