|
@@ -1,11 +1,25 @@
|
|
|
package com.fjhx.email.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.email.config.exception.ServiceException;
|
|
|
+import com.fjhx.email.entity.EnterpriseDomain;
|
|
|
+import com.fjhx.email.entity.EnterpriseFolder;
|
|
|
import com.fjhx.email.entity.EnterpriseMailbox;
|
|
|
+import com.fjhx.email.entity.dto.MailboxInfo;
|
|
|
import com.fjhx.email.mapper.EnterpriseMailboxMapper;
|
|
|
+import com.fjhx.email.service.IEnterpriseDomainService;
|
|
|
+import com.fjhx.email.service.IEnterpriseFolderService;
|
|
|
import com.fjhx.email.service.IEnterpriseMailboxService;
|
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.email.utils.EmailUtil;
|
|
|
+import com.sun.mail.imap.IMAPStore;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.mail.MessagingException;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
* 企业邮箱 服务实现类
|
|
@@ -17,4 +31,52 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class EnterpriseMailboxServiceImpl extends ServiceImpl<EnterpriseMailboxMapper, EnterpriseMailbox> implements IEnterpriseMailboxService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IEnterpriseFolderService enterpriseFolderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IEnterpriseDomainService enterpriseDomainService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void add(EnterpriseMailbox enterpriseMailbox) {
|
|
|
+ Long enterpriseMailboxId = IdWorker.getId();
|
|
|
+
|
|
|
+ Long domainId = enterpriseMailbox.getDomainId();
|
|
|
+ EnterpriseDomain enterpriseDomain = enterpriseDomainService.getById(domainId);
|
|
|
+
|
|
|
+ if (enterpriseDomain == null) {
|
|
|
+ throw new ServiceException("未找到企业域名");
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ MailboxInfo mailboxInfo = new MailboxInfo();
|
|
|
+ mailboxInfo.setReceiveHost(enterpriseDomain.getReceiveHost());
|
|
|
+ mailboxInfo.setMailUser(enterpriseMailbox.getMailUserPrefix() + "@" + enterpriseDomain.getDomainName());
|
|
|
+ mailboxInfo.setReceivePort(enterpriseDomain.getReceivePort());
|
|
|
+ mailboxInfo.setMailPassword(enterpriseMailbox.getMailPassword());
|
|
|
+ IMAPStore imapStore = EmailUtil.getIMAPStore(mailboxInfo);
|
|
|
+
|
|
|
+ List<String> folderNameList = EmailUtil.getFolderNameList(imapStore);
|
|
|
+ List<EnterpriseFolder> personalFolderList = folderNameList.stream().map(item -> {
|
|
|
+ EnterpriseFolder enterpriseFolder = new EnterpriseFolder();
|
|
|
+ enterpriseFolder.setMailboxId(enterpriseMailboxId);
|
|
|
+ enterpriseFolder.setName(item);
|
|
|
+ enterpriseFolder.setSyncStatus(1);
|
|
|
+ return enterpriseFolder;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ enterpriseFolderService.saveBatch(personalFolderList);
|
|
|
+
|
|
|
+ } catch (MessagingException e) {
|
|
|
+ throw new ServiceException("连接邮箱异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ enterpriseMailbox.setId(enterpriseMailboxId);
|
|
|
+ enterpriseMailbox.setDefaultStatus(0);
|
|
|
+ enterpriseMailbox.setSyncStatus(1);
|
|
|
+ enterpriseMailbox.setStatus(1);
|
|
|
+ this.save(enterpriseMailbox);
|
|
|
+ }
|
|
|
+
|
|
|
}
|