|
@@ -5,6 +5,7 @@ import cn.hutool.core.io.IORuntimeException;
|
|
|
import cn.hutool.core.thread.ThreadUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.fjhx.email.config.exception.ServiceException;
|
|
|
import com.fjhx.email.entity.EnterpriseFolder;
|
|
|
import com.fjhx.email.entity.EnterpriseMessage;
|
|
@@ -14,6 +15,7 @@ import com.fjhx.email.entity.dto.MailFolderInfo;
|
|
|
import com.fjhx.email.entity.dto.MailInfo;
|
|
|
import com.fjhx.email.entity.dto.MailSyncInfo;
|
|
|
import com.fjhx.email.entity.dto.MailboxInfo;
|
|
|
+import com.fjhx.email.entity.vo.MessageDetailVo;
|
|
|
import com.fjhx.email.service.*;
|
|
|
import com.fjhx.email.utils.HxHttpUtil;
|
|
|
import com.fjhx.email.utils.email.ImapUtil;
|
|
@@ -247,7 +249,7 @@ public class CoreServiceImpl implements ApplicationRunner {
|
|
|
}
|
|
|
|
|
|
// 拉取邮件
|
|
|
- List<MailInfo> mailInfoList = getMailInfoList(folder, mailFolder, messages);
|
|
|
+ List<MailInfo> mailInfoList = getMailInfoList(folder, mailFolder, messages, mailboxInfo);
|
|
|
|
|
|
if (ObjectUtil.isEmpty(mailInfoList)) {
|
|
|
continue;
|
|
@@ -287,7 +289,7 @@ public class CoreServiceImpl implements ApplicationRunner {
|
|
|
/**
|
|
|
* 拉取邮件
|
|
|
*/
|
|
|
- private List<MailInfo> getMailInfoList(IMAPFolder folder, MailFolderInfo mailFolder, Message[] messages) throws MessagingException {
|
|
|
+ private List<MailInfo> getMailInfoList(IMAPFolder folder, MailFolderInfo mailFolder, Message[] messages, MailboxInfo mailboxInfo) throws MessagingException {
|
|
|
|
|
|
// 上次同步邮件uid
|
|
|
Long lastUid = mailFolder.getLastUid();
|
|
@@ -332,6 +334,7 @@ public class CoreServiceImpl implements ApplicationRunner {
|
|
|
|
|
|
// 邮件信息
|
|
|
MailInfo mailInfo = new MailInfo();
|
|
|
+ mailInfo.setId(IdWorker.getId());
|
|
|
mailInfo.setUid(folder.getUID(message));
|
|
|
mailInfo.setSubject(message.getSubject());
|
|
|
mailInfo.setSendDate(message.getSentDate());
|
|
@@ -378,12 +381,41 @@ public class CoreServiceImpl implements ApplicationRunner {
|
|
|
// 添加同步邮件总次数
|
|
|
mailCount.incrementAndGet();
|
|
|
|
|
|
+ //拉取明细
|
|
|
+ syncMessageDetail(mailInfo, mailboxInfo.getType(), message);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
return mailInfoList;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 同步明细信息
|
|
|
+ */
|
|
|
+ private void syncMessageDetail(MailInfo mailInfo, Integer type, IMAPMessage message) {
|
|
|
+ Long messageId = mailInfo.getId();
|
|
|
+ MessageDetailVo messageDetailVo = new MessageDetailVo();
|
|
|
+ messageDetailVo.setMessageId(messageId);
|
|
|
+
|
|
|
+ if(ObjectUtil.isEmpty(mailInfo.getSyncStatus())){
|
|
|
+ mailInfo.setSyncStatus(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 赋值邮件 正文、附件
|
|
|
+ mailService.setTextAndAttachment(message, messageDetailVo);
|
|
|
+ // 赋值邮件 收件人、抄送人、密送人、回复人
|
|
|
+ mailService.setAddress(message, messageDetailVo);
|
|
|
+ // 保存数据
|
|
|
+ mailService.saveMessageDetail(messageId, messageDetailVo, type);
|
|
|
+
|
|
|
+ mailInfo.setSyncStatus(1);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("拉取邮件明细出错:",e.getMessage(), e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 判断是否有附件
|
|
|
*
|
|
|
* @return
|
|
@@ -429,6 +461,7 @@ public class CoreServiceImpl implements ApplicationRunner {
|
|
|
|
|
|
List<PersonalMessage> personalMessageList = mailInfoList.stream().map(mailInfo -> {
|
|
|
PersonalMessage personalMessage = new PersonalMessage();
|
|
|
+ personalMessage.setId(mailInfo.getId());
|
|
|
personalMessage.setUid(mailInfo.getUid());
|
|
|
personalMessage.setMailboxId(mailboxInfo.getId());
|
|
|
personalMessage.setFolderId(mailFolder.getId());
|
|
@@ -438,7 +471,7 @@ public class CoreServiceImpl implements ApplicationRunner {
|
|
|
personalMessage.setFromPersonalName(mailInfo.getFromPersonalName());
|
|
|
personalMessage.setSendDate(mailInfo.getSendDate());
|
|
|
personalMessage.setReceivedDate(mailInfo.getReceivedDate());
|
|
|
- personalMessage.setSyncStatus(0);
|
|
|
+ personalMessage.setSyncStatus(mailInfo.getSyncStatus());
|
|
|
personalMessage.setDelFlag(0);
|
|
|
personalMessage.setFlags(mailInfo.getFlags());
|
|
|
personalMessage.setRecipients(mailInfo.getRecipients());
|
|
@@ -459,6 +492,7 @@ public class CoreServiceImpl implements ApplicationRunner {
|
|
|
|
|
|
List<EnterpriseMessage> enterpriseMessageList = mailInfoList.stream().map(mailInfo -> {
|
|
|
EnterpriseMessage enterpriseMessage = new EnterpriseMessage();
|
|
|
+ enterpriseMessage.setId(mailInfo.getId());
|
|
|
enterpriseMessage.setUid(mailInfo.getUid());
|
|
|
enterpriseMessage.setMailboxId(mailboxInfo.getId());
|
|
|
enterpriseMessage.setFolderId(mailFolder.getId());
|
|
@@ -468,7 +502,7 @@ public class CoreServiceImpl implements ApplicationRunner {
|
|
|
enterpriseMessage.setFromPersonalName(mailInfo.getFromPersonalName());
|
|
|
enterpriseMessage.setSendDate(mailInfo.getSendDate());
|
|
|
enterpriseMessage.setReceivedDate(mailInfo.getReceivedDate());
|
|
|
- enterpriseMessage.setSyncStatus(0);
|
|
|
+ enterpriseMessage.setSyncStatus(mailInfo.getSyncStatus());
|
|
|
enterpriseMessage.setDelFlag(0);
|
|
|
enterpriseMessage.setFlags(mailInfo.getFlags());
|
|
|
enterpriseMessage.setRecipients(mailInfo.getRecipients());
|