|
@@ -0,0 +1,535 @@
|
|
|
+package com.fjhx.back.test;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.extra.mail.Mail;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.fjhx.entity.Mailbox;
|
|
|
+import com.maxmind.geoip2.DatabaseReader;
|
|
|
+import com.sun.mail.imap.IMAPMessage;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
+import org.apache.commons.collections4.MapUtils;
|
|
|
+import org.apache.commons.lang3.ArrayUtils;
|
|
|
+import org.springblade.common.constant.RedisCacheKeyConstant;
|
|
|
+import org.springblade.common.enums.YesOrNoEnum;
|
|
|
+import org.springblade.core.tool.utils.Func;
|
|
|
+import org.springblade.core.tool.utils.StringUtils;
|
|
|
+import org.springblade.core.tool.utils.id.IdUtils;
|
|
|
+import org.springframework.data.mongodb.core.query.Criteria;
|
|
|
+import org.springframework.data.mongodb.core.query.Query;
|
|
|
+
|
|
|
+import javax.mail.*;
|
|
|
+import javax.mail.internet.InternetAddress;
|
|
|
+import javax.mail.internet.MimeMessage;
|
|
|
+import javax.mail.internet.MimeUtility;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+public class IMAPReceiveMailTest {
|
|
|
+
|
|
|
+ private static final String[] filterCharacterArr = {"unkonwn"};
|
|
|
+
|
|
|
+ public static void main(String[] args) throws Exception {
|
|
|
+ // 准备连接服务器的会话信息
|
|
|
+ Properties props = new Properties();
|
|
|
+ // props.setProperty("mail.store.protocol", "imap");
|
|
|
+ // props.setProperty("mail.imap.host", "imap.qiye.163.com");
|
|
|
+ // props.setProperty("mail.imap.port", "143");
|
|
|
+ props.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
|
|
|
+ // props.setProperty("mail.store.protocol", "imap");
|
|
|
+ // props.setProperty("mail.imap.host", "imap.qq.com");
|
|
|
+ // props.setProperty("mail.imap.port", "993");
|
|
|
+ // props.setProperty("mail.imap.socketFactory.port", "993");
|
|
|
+
|
|
|
+ // 创建Session实例对象
|
|
|
+ Session session = Session.getInstance(props);
|
|
|
+
|
|
|
+ // 创建IMAP协议的Store对象
|
|
|
+ // Store store = session.getStore("imap");
|
|
|
+ Store store = session.getStore("imap");
|
|
|
+
|
|
|
+ // 连接邮件服务器
|
|
|
+ // store.connect("sale3@bridge-style.cc", "peQ8ztVZ6f8F2sp5");
|
|
|
+ store.connect("imap.qq.com", 993, "2428241269@qq.com", "kdypajdrwfhtdihb");
|
|
|
+
|
|
|
+ // 获得收件箱
|
|
|
+ Folder folder = store.getFolder("INBOX");
|
|
|
+ // 以读写模式打开收件箱
|
|
|
+ folder.open(Folder.READ_WRITE);
|
|
|
+
|
|
|
+
|
|
|
+ // while (true) {
|
|
|
+ Message[] messages = folder.getMessages();
|
|
|
+ System.out.println("messages[messages.length-1].getSubject() = " + messages[messages.length - 2].getSubject());
|
|
|
+ System.out.println("messages = " + messages.length);
|
|
|
+
|
|
|
+ Message message = messages[messages.length - 1];
|
|
|
+
|
|
|
+ Address[] from = message.getFrom();
|
|
|
+ for (Address address : from) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Object content = message.getContent();
|
|
|
+
|
|
|
+
|
|
|
+ Enumeration<Header> allHeaders = message.getAllHeaders();
|
|
|
+ String[] header = message.getHeader("X-QQ-mid");
|
|
|
+ Thread.sleep(100);
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
+ //
|
|
|
+ // // 关闭资源
|
|
|
+ // folder.close(false);
|
|
|
+ // store.close();
|
|
|
+ }
|
|
|
+//
|
|
|
+//
|
|
|
+// private static void readMail(Message message) {
|
|
|
+// try {
|
|
|
+// List<Mail> data = new ArrayList<>();
|
|
|
+//
|
|
|
+// // Part part = message;
|
|
|
+// Part part = new MimeMessage((MimeMessage) message);
|
|
|
+//
|
|
|
+// MimeMessage mimeMessage = (MimeMessage) message;
|
|
|
+//
|
|
|
+// // 邮件消息ID
|
|
|
+// String messageId = getMessageId(mimeMessage);
|
|
|
+// // if (StringUtils.isBlank(messageId)) {
|
|
|
+// // continue;
|
|
|
+// // }
|
|
|
+//
|
|
|
+// // 发件人
|
|
|
+// String fromId = getFrom(mimeMessage);
|
|
|
+// // 收件人
|
|
|
+// String toId = getMailAddress(mimeMessage, "to");
|
|
|
+// // 抄送人
|
|
|
+// String ccId = getMailAddress(mimeMessage, "cc");
|
|
|
+// // 密送人
|
|
|
+// String bccId = getMailAddress(mimeMessage, "bcc");
|
|
|
+// // 标题
|
|
|
+// String title = getSubject(mimeMessage);
|
|
|
+//
|
|
|
+// // ----- 2021-11-04 屏蔽掉是为了解决密送邮件抓取不下来问题 -----
|
|
|
+// // 判断发件人、收件人、抄送人、密送人是否包含当前操作的邮箱
|
|
|
+// // String ids = fromId + "," + toId + "," + ccId + "," + bccId;
|
|
|
+// // String[] idsArr = ids.split(",");
|
|
|
+// // if (!StringUtils.equalsAnyIgnoreCase(mailBoxName, idsArr)) {
|
|
|
+// // continue;
|
|
|
+// // }
|
|
|
+//
|
|
|
+// // 文件夹ID
|
|
|
+// String folderId = "0";
|
|
|
+// // 先判断是否存在收件规则:发件人
|
|
|
+// if (MapUtils.isNotEmpty(newestFolderIdMap)) {
|
|
|
+// folderId = newestFolderIdMap.getOrDefault(fromId, "0");
|
|
|
+// }
|
|
|
+// // 不存在则判断是否存在收件规则:发件域(如:@qq.com)
|
|
|
+// if (MapUtils.isNotEmpty(newestFolderIdMap) && StringUtils.equals(folderId, "0")) {
|
|
|
+// String field = StringUtils.substring(fromId, fromId.indexOf("@"));
|
|
|
+// folderId = newestFolderIdMap.getOrDefault(field, "0");
|
|
|
+// }
|
|
|
+// // 不存在则判断是否存在收件规则:标题包含
|
|
|
+// if (CollectionUtils.isNotEmpty(titleRules) && StringUtils.equals(folderId, "0")) {
|
|
|
+// List<String> ruleValues = titleRules.stream().map(MailRule::getRuleValue).collect(Collectors.toList());
|
|
|
+// Map<String, String> ruleValuesMap = titleRules.stream().collect(Collectors.toMap(MailRule::getRuleValue, MailRule::getFolderId, (key1, key2) -> key2));
|
|
|
+// String field = "";
|
|
|
+// for (String value : ruleValues) {
|
|
|
+// if (StringUtils.contains(title, value)) {
|
|
|
+// field = value;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// folderId = ruleValuesMap.getOrDefault(field, "0");
|
|
|
+// }
|
|
|
+// // 不存在继续则判断是否存在官方文件夹
|
|
|
+// if (MapUtils.isNotEmpty(newestFolderIdMap) && StringUtils.equals(folderId, "0")) {
|
|
|
+// folderId = newestFolderIdMap.getOrDefault(folder, "0");
|
|
|
+// }
|
|
|
+//
|
|
|
+// JavaMailDetailed jd = new JavaMailDetailed();
|
|
|
+// jd.setMessageId(messageId);
|
|
|
+// jd.setUid(getUid(mimeMessage));
|
|
|
+// jd.setSubject(title);
|
|
|
+// jd.setSentDate(getSentDate(mimeMessage));
|
|
|
+// // jd.setReplySign(getReplySign(mimeMessage));
|
|
|
+// jd.setRead(isNew(mimeMessage));
|
|
|
+// jd.setFrom(fromId);
|
|
|
+// jd.setMailAddressTo(toId);
|
|
|
+// jd.setMailAddressCC(ccId);
|
|
|
+// jd.setMailAddressBCC(bccId);
|
|
|
+// // 内容,获取一次就行,不需要放在structureMail
|
|
|
+// jd.setBody(getBodyText(part));
|
|
|
+// // ip
|
|
|
+// jd.setIp(MailUtil.getMailIp(mimeMessage));
|
|
|
+//
|
|
|
+// if (StringUtils.isNotBlank(jd.getIp())) {
|
|
|
+// try {
|
|
|
+// // 数据文件路径
|
|
|
+// if (Func.isEmpty(database) || Func.isEmpty(reader)) {
|
|
|
+// database = new File("/mnt/geoIp2/GeoIP2-City.mmdb");
|
|
|
+// reader = new DatabaseReader.Builder(database).build();
|
|
|
+// }
|
|
|
+// jd.setGeoIpMsg(GeoIP2Util.getGeographicalPosition(jd.getIp(), jd.getSentDate(), reader));
|
|
|
+// } catch (Exception e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 发送人地址
|
|
|
+// if (StringUtils.equals(jd.getFrom(), mailBoxName)) {
|
|
|
+// List<Mail> list = structureMail(part, jd.getFrom(), folder, jd, box, now, folderId, null, allMailBoxMap, tenantId, allMailRulesMap);
|
|
|
+// if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+// mails.addAll(list);
|
|
|
+// data.addAll(list);
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// // key=文件夹-发送人-邮箱ID
|
|
|
+// repeatMap.put(folder + ":" + jd.getFrom() + "-" + jd.getMessageId(), 1);
|
|
|
+//
|
|
|
+// // 用于判断收件人、抄送人、密送人是否包含同一个账号
|
|
|
+// boolean flag = false;
|
|
|
+//
|
|
|
+// // 客户名称(公司名称)
|
|
|
+// String customerName = "";
|
|
|
+//
|
|
|
+// // 收信人地址
|
|
|
+// // if (StringUtils.contains(jd.getMailAddressTo(), mailBoxName)) {
|
|
|
+// // ----- 2021-11-04 屏蔽掉是为了解决密送邮件抓取不下来问题 -----
|
|
|
+// List<Mail> list2 = structureMail(part, jd.getMailAddressTo(), folder, jd, box, now, folderId, repeatMap, allMailBoxMap, tenantId, allMailRulesMap);
|
|
|
+// if (CollectionUtils.isNotEmpty(list2)) {
|
|
|
+// if (list2.size() == 1) {
|
|
|
+// customerName = list2.get(0).getCustomerName();
|
|
|
+// }
|
|
|
+// mails.addAll(list2);
|
|
|
+// data.addAll(list2);
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 抄送人地址
|
|
|
+// // if (!flag && StringUtils.contains(jd.getMailAddressCC(), mailBoxName)) {
|
|
|
+// // ----- 2021-11-04 屏蔽掉是为了解决密送邮件抓取不下来问题 -----
|
|
|
+// List<Mail> list3 = structureMail(part, jd.getMailAddressCC(), folder, jd, box, now, folderId, repeatMap, allMailBoxMap, tenantId, allMailRulesMap);
|
|
|
+// if (CollectionUtils.isNotEmpty(list3)) {
|
|
|
+// mails.addAll(list3);
|
|
|
+// data.addAll(list3);
|
|
|
+// }
|
|
|
+// // }
|
|
|
+//
|
|
|
+// // 暗抄人地址
|
|
|
+// // if (!flag && StringUtils.contains(jd.getMailAddressBCC(), mailBoxName)) {
|
|
|
+// // ----- 2021-11-04 屏蔽掉是为了解决密送邮件抓取不下来问题 -----
|
|
|
+// List<Mail> list4 = structureMail(part, jd.getMailAddressBCC(), folder, jd, box, now, folderId, repeatMap, allMailBoxMap, tenantId, allMailRulesMap);
|
|
|
+// if (CollectionUtils.isNotEmpty(list4)) {
|
|
|
+// mails.addAll(list4);
|
|
|
+// data.addAll(list4);
|
|
|
+// }
|
|
|
+// // }
|
|
|
+//
|
|
|
+// // 上传文件、保存邮件数据
|
|
|
+// if (CollectionUtils.isNotEmpty(data)) {
|
|
|
+// // 上传邮件附件到华为云
|
|
|
+// splitUploadFile(data);
|
|
|
+//
|
|
|
+// // 批量新增邮箱
|
|
|
+// int i = mailService.batchInsert(data, tenantId);
|
|
|
+// if (i > 0) {
|
|
|
+// // 异步插入邮件抓取通知
|
|
|
+// messageNoticeService.sendMailNotice(data);
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 回填客户名称
|
|
|
+// if (StringUtils.isNotEmpty(customerName)) {
|
|
|
+// for (Mail mail : mails) {
|
|
|
+// mail.setCustomerName(customerName);
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// } catch (Exception e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 获得此邮件的Message-ID
|
|
|
+// */
|
|
|
+// private static String getMessageId(MimeMessage mimeMessage) throws MessagingException {
|
|
|
+// return mimeMessage.getMessageID();
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 获得发件人的地址和姓名
|
|
|
+// */
|
|
|
+// private static String getFrom(MimeMessage mimeMessage) throws Exception {
|
|
|
+// InternetAddress[] address = (InternetAddress[]) mimeMessage.getFrom();
|
|
|
+// if (ArrayUtils.isEmpty(address)) {
|
|
|
+// return "";
|
|
|
+// }
|
|
|
+// // 收件人地址
|
|
|
+// String from = address[0].getAddress();
|
|
|
+//
|
|
|
+// // 判断发件人是否包含过滤的字符
|
|
|
+// boolean flag = false;
|
|
|
+// for (String s : filterCharacterArr) {
|
|
|
+// if (StringUtils.containsIgnoreCase(from, s)) {
|
|
|
+// flag = true;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (StringUtils.isBlank(from) || flag) {
|
|
|
+// // 收件人姓名
|
|
|
+// from = address[0].getPersonal();
|
|
|
+// if (StringUtils.isBlank(from)) {
|
|
|
+// from = "";
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return StringUtils.lowerCase(from);
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * <p>获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同<p>
|
|
|
+// *
|
|
|
+// * <p>"to"----收件人 "cc"---抄送人地址 "bcc"---密送人地址<p>
|
|
|
+// */
|
|
|
+// private static String getMailAddress(MimeMessage mimeMessage, String type) throws Exception {
|
|
|
+// String addType = type.toUpperCase();
|
|
|
+// InternetAddress[] address;
|
|
|
+// HashSet<String> mailAddrSet = new HashSet<>();
|
|
|
+// if (addType.equals("TO") || addType.equals("CC") || addType.equals("BCC")) {
|
|
|
+// if (addType.equals("TO")) {
|
|
|
+// address = (InternetAddress[]) mimeMessage.getRecipients(Message.RecipientType.TO);
|
|
|
+// } else if (addType.equals("CC")) {
|
|
|
+// address = (InternetAddress[]) mimeMessage.getRecipients(Message.RecipientType.CC);
|
|
|
+// } else {
|
|
|
+// address = (InternetAddress[]) mimeMessage.getRecipients(Message.RecipientType.BCC);
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (address != null) {
|
|
|
+// for (InternetAddress internetAddress : address) {
|
|
|
+// String emailAddr = internetAddress.getAddress();
|
|
|
+// if (emailAddr == null) {
|
|
|
+// emailAddr = "";
|
|
|
+// } else {
|
|
|
+// emailAddr = MimeUtility.decodeText(emailAddr);
|
|
|
+// }
|
|
|
+// // String personal = address[i].getPersonal();
|
|
|
+// // if (personal == null) {
|
|
|
+// // personal = "";
|
|
|
+// // } else {
|
|
|
+// // log.debug("转换之前的personal:{}", personal);
|
|
|
+// // personal = MimeUtility.decodeText(personal);
|
|
|
+// // log.debug("转换之后的personal:{}", personal);
|
|
|
+// // }
|
|
|
+// // String compositeto = personal + "<" + emailAddr + ">";
|
|
|
+// // log.debug("完整的邮件地址:{}", compositeto);
|
|
|
+// //
|
|
|
+// // mailAddr += "," + emailAddr;
|
|
|
+//
|
|
|
+// mailAddrSet.add(StringUtils.lowerCase(emailAddr));
|
|
|
+// }
|
|
|
+// // mailAddr = mailAddr.substring(1);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return String.join(",", mailAddrSet);
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 获得邮件主题
|
|
|
+// */
|
|
|
+// private static String getSubject(MimeMessage mimeMessage) {
|
|
|
+// try {
|
|
|
+// String subject = mimeMessage.getSubject();
|
|
|
+// if (StringUtils.isBlank(subject)) {
|
|
|
+// subject = StringUtils.EMPTY;
|
|
|
+// } else {
|
|
|
+// subject = ObjectUtil.defaultIfEmpty(MimeUtility.decodeText(mimeMessage.getSubject()), StringUtils.EMPTY);
|
|
|
+// }
|
|
|
+// log.debug("邮件主题:{}", subject);
|
|
|
+// return subject;
|
|
|
+// } catch (Exception e) {
|
|
|
+// log.error("获得邮件主题异常:", e);
|
|
|
+// return StringUtils.EMPTY;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 构造邮件信息
|
|
|
+// *
|
|
|
+// * @param mailStr 邮箱号,收件人、接收人、抄送人
|
|
|
+// * @param folder 文件夹
|
|
|
+// * @param jd 解析后的邮件信息
|
|
|
+// * @param box 抓取邮箱的账号
|
|
|
+// * @param now 当前时间
|
|
|
+// * @param folderId 文件夹ID
|
|
|
+// * @param repeatMap
|
|
|
+// * @param allMailRulesMap 该租户下的所有邮件规则map
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// private List<Mail> structureMail(Part part, String mailStr, String folder, JavaMailDetailed jd, Mailbox box, Date now, String folderId, HashMap<String, Integer> repeatMap, Map<String, Mailbox> allMailBoxMap, String tenantId, Map<String, List<MailRule>> allMailRulesMap) {
|
|
|
+// String[] split = org.apache.commons.lang3.StringUtils.split(mailStr, ",");
|
|
|
+// if (ArrayUtils.isEmpty(split)) {
|
|
|
+// return null;
|
|
|
+// }
|
|
|
+//
|
|
|
+// List<Mail> mails = new ArrayList<>();
|
|
|
+// for (String ms : split) {
|
|
|
+// // 判断ms是否等于当前抓取邮箱账号(排除会把别人的当作自己数据重复抓取)
|
|
|
+// if (!org.apache.commons.lang3.StringUtils.equalsIgnoreCase(ms, box.getMailboxName())) {
|
|
|
+// // 2021-11-04 旧逻辑,满足条件的跳过
|
|
|
+// // continue;
|
|
|
+//
|
|
|
+// // ----- 2021-11-04 解决密送邮件抓取不下来问题 -----
|
|
|
+// ms = box.getMailboxName();
|
|
|
+// }
|
|
|
+// if (repeatMap != null && repeatMap.size() > 0) {
|
|
|
+// //key=文件夹-邮箱-邮箱ID
|
|
|
+// String k = folder + ":" + ms + "-" + jd.getMessageId();
|
|
|
+// if (repeatMap.get(k) != null) {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// // ----- 2021-11-04 解决密送邮件抓取不下来问题 begin -----
|
|
|
+// else {
|
|
|
+// repeatMap = new HashMap<>();
|
|
|
+// }
|
|
|
+// //key=文件夹-收件人-邮箱ID
|
|
|
+// repeatMap.put(folder + ":" + ms + "-" + jd.getMessageId(), 1);
|
|
|
+// // ----- 2021-11-04 解决密送邮件抓取不下来问题 end -----
|
|
|
+//
|
|
|
+// Mail mail = new Mail();
|
|
|
+//
|
|
|
+// //邮件类型:1、发起;2、接收
|
|
|
+// if (org.apache.commons.lang3.StringUtils.equals(folder, MailConstant.Folder.SEND_BOX) || org.apache.commons.lang3.StringUtils.equals(folder, MailConstant.Folder.SEND) || org.apache.commons.lang3.StringUtils.equals(folder, MailConstant.Folder.GMAIL_SEND_BOX)) {
|
|
|
+// mail.setMailType(1);
|
|
|
+// } else {
|
|
|
+// mail.setMailType(2);
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (mail.getMailType() == 2) {
|
|
|
+// //接收人类型:1、收件人;2、抄送人;3、暗抄送人
|
|
|
+// StringJoiner receiverType = new StringJoiner(",");
|
|
|
+// HashSet<String> receiverIds = new HashSet<>();
|
|
|
+// //收件人
|
|
|
+// if (org.apache.commons.lang3.StringUtils.indexOf(jd.getMailAddressTo(), ms) != -1) {
|
|
|
+// receiverType.add(MailReceiverTypeEnum.TO.getKey() + "");
|
|
|
+// receiverIds.add(ms);
|
|
|
+// }
|
|
|
+// //抄送人
|
|
|
+// if (org.apache.commons.lang3.StringUtils.indexOf(jd.getMailAddressCC(), ms) != -1) {
|
|
|
+// receiverType.add(MailReceiverTypeEnum.CC.getKey() + "");
|
|
|
+// receiverIds.add(ms);
|
|
|
+// }
|
|
|
+// //暗抄人
|
|
|
+// if (org.apache.commons.lang3.StringUtils.indexOf(jd.getMailAddressBCC(), ms) != -1) {
|
|
|
+// receiverType.add(MailReceiverTypeEnum.BCC.getKey() + "");
|
|
|
+// receiverIds.add(ms);
|
|
|
+// }
|
|
|
+// String receiverId = receiverIds.stream().collect(Collectors.joining(","));
|
|
|
+//
|
|
|
+// mail.setReceiverType(receiverType.toString());
|
|
|
+// mail.setReceiverId(receiverId);
|
|
|
+// }
|
|
|
+//
|
|
|
+// //mail.setFirstId("0");
|
|
|
+// //mail.setParentId("0");
|
|
|
+// mail.setMessageid(jd.getMessageId());
|
|
|
+// mail.setUid(jd.getUid());
|
|
|
+// mail.setTitle(jd.getSubject());
|
|
|
+// mail.setSentDate(jd.getSentDate());
|
|
|
+//
|
|
|
+// mail.setFromId(jd.getFrom());
|
|
|
+// mail.setIsRead(jd.getRead() ? YesOrNoEnum.YES.getKey() : YesOrNoEnum.NO.getKey());
|
|
|
+//
|
|
|
+// mail.setToId(jd.getMailAddressTo());
|
|
|
+// mail.setCcId(jd.getMailAddressCC());
|
|
|
+// mail.setBccId(jd.getMailAddressBCC());
|
|
|
+// mail.setIp(jd.getIp());
|
|
|
+// mail.setGeoIpMsg(jd.getGeoIpMsg());
|
|
|
+//
|
|
|
+// //============邮件归类===============
|
|
|
+// //文件夹ID
|
|
|
+// mail.setFolderId(folderId);
|
|
|
+//
|
|
|
+// //标签ID
|
|
|
+// mail.setLabelId("0");
|
|
|
+//
|
|
|
+// //是否已回复,0:否、1:是
|
|
|
+// mail.setReply(0);
|
|
|
+//
|
|
|
+// //状态:0、草稿;1、已发送;2、已删除;3、垃圾箱;4、收件箱
|
|
|
+// mail.setStatus(getStatusByFolderName(mail.getFromId(), folder));
|
|
|
+//
|
|
|
+// mail.setBodyText(jd.getBody());
|
|
|
+// mail.setDataSources(MailConstant.DataSource.SYNC);
|
|
|
+// mail.setCreateUser(box.getUserId());
|
|
|
+// mail.setCreateTime(now);
|
|
|
+// //抓取数据邮箱
|
|
|
+// mail.setGrabMailBox(box.getMailboxName());
|
|
|
+//
|
|
|
+// //设置权限
|
|
|
+// setMailAuth(mail, allMailBoxMap, tenantId, box.getMailboxName(), allMailRulesMap);
|
|
|
+//
|
|
|
+// //根据auth、messageid、uid查询数据是否存在
|
|
|
+// Criteria criteria = Criteria.where("auth").is(mail.getAuth()).and("messageid").is(mail.getMessageid()).and("uid").is(mail.getUid());
|
|
|
+// Query query = new Query();
|
|
|
+// query.addCriteria(criteria);
|
|
|
+// // 只查询id字段
|
|
|
+// query.fields().include("_id");
|
|
|
+// long count = mongoTemplate.count(query, Mail.getTableName(tenantId));
|
|
|
+// if (count > 0) {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+//
|
|
|
+// mail.setId(IdUtils.fastSimpleUUID());
|
|
|
+//
|
|
|
+// try {
|
|
|
+// //判断内容中是否含有回执代码
|
|
|
+// if (org.apache.commons.lang3.StringUtils.isNotBlank(mail.getBodyText()) && org.apache.commons.lang3.StringUtils.containsIgnoreCase(mail.getBodyText(), MailConstant.RECEIPT_ID)) {
|
|
|
+// //截取邮件ID
|
|
|
+// String mailId = mail.getBodyText().split(MailConstant.RECEIPT_ID)[1];
|
|
|
+// mailId = mailId.split("mId=")[1];
|
|
|
+// mailId = mailId.substring(0, 32);
|
|
|
+// //如果是发送的,则用内容中携带的mId值
|
|
|
+// if (mail.getMailType() == MailTypeEnum.SEND.getKey() && org.apache.commons.lang3.StringUtils.equals(mail.getFromId(), box.getMailboxName())) {
|
|
|
+// mail.setId(mailId);
|
|
|
+// }
|
|
|
+//
|
|
|
+// //获取缓存回执记录
|
|
|
+// List<JSONObject> receiptRecords = bladeRedis.get(RedisCacheKeyConstant.MAIL_RECEIPT_KEY + mail.getId());
|
|
|
+// if (CollectionUtils.isNotEmpty(receiptRecords)) {
|
|
|
+// mail.setReceiptRecords(receiptRecords);
|
|
|
+// //删除缓存
|
|
|
+// bladeRedis.del(RedisCacheKeyConstant.MAIL_RECEIPT_KEY + mail.getId());
|
|
|
+// }
|
|
|
+// }
|
|
|
+// } catch (Exception e) {
|
|
|
+// log.error("解析回执代码错误!!!" + ",邮件标题:《" + mail.getTitle() + "》");
|
|
|
+// }
|
|
|
+//
|
|
|
+// //附件
|
|
|
+// List<FileDetailed> attachments = getAttachments(part);
|
|
|
+// List<MailAttachment> attas = new ArrayList<>();
|
|
|
+// if (CollectionUtils.isNotEmpty(attachments)) {
|
|
|
+// for (FileDetailed attachment : attachments) {
|
|
|
+// MailAttachment mailAttachment = new MailAttachment(UUID.randomUUID().toString(), attachment.getRealName(), attachment.getTemName(), attachment.getPath(), attachment.getSize());
|
|
|
+// mailAttachment.setCid(attachment.getCid());
|
|
|
+// mailAttachment.setDecodePreName(Optional.ofNullable(attachment.getDecodePreName()).orElse(""));
|
|
|
+// mailAttachment.setInputStream(attachment.getInputStream());
|
|
|
+// attas.add(mailAttachment);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// mail.setAttachments(attas);
|
|
|
+// mails.add(mail);
|
|
|
+// attachments = null;
|
|
|
+// }
|
|
|
+// return mails;
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+}
|