PersonalMailboxServiceImpl.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package com.fjhx.email.service.impl;
  2. import com.baomidou.mybatisplus.core.toolkit.IdWorker;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.fjhx.email.config.exception.ServiceException;
  5. import com.fjhx.email.entity.PersonalFolder;
  6. import com.fjhx.email.entity.PersonalMailbox;
  7. import com.fjhx.email.entity.dto.MailboxInfo;
  8. import com.fjhx.email.mapper.PersonalMailboxMapper;
  9. import com.fjhx.email.service.IPersonalFolderService;
  10. import com.fjhx.email.service.IPersonalMailboxService;
  11. import com.fjhx.email.utils.EmailUtil;
  12. import com.sun.mail.imap.IMAPStore;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import javax.mail.MessagingException;
  16. import java.util.List;
  17. import java.util.stream.Collectors;
  18. /**
  19. * <p>
  20. * 个人邮箱 服务实现类
  21. * </p>
  22. *
  23. * @author zlj
  24. * @since 2023-04-04
  25. */
  26. @Service
  27. public class PersonalMailboxServiceImpl extends ServiceImpl<PersonalMailboxMapper, PersonalMailbox> implements IPersonalMailboxService {
  28. @Autowired
  29. private IPersonalFolderService personalFolderService;
  30. @Override
  31. public void add(PersonalMailbox personalMailbox) {
  32. Long personalMailboxId = IdWorker.getId();
  33. try {
  34. MailboxInfo mailboxInfo = new MailboxInfo();
  35. mailboxInfo.setReceiveHost(personalMailbox.getReceiveHost());
  36. mailboxInfo.setReceivePort(personalMailbox.getReceivePort());
  37. mailboxInfo.setMailUser(personalMailbox.getMailUser());
  38. mailboxInfo.setMailPassword(personalMailbox.getMailPassword());
  39. IMAPStore imapStore = EmailUtil.getIMAPStore(mailboxInfo);
  40. List<String> folderNameList = EmailUtil.getFolderNameList(imapStore);
  41. List<PersonalFolder> personalFolderList = folderNameList.stream().map(item -> {
  42. PersonalFolder personalFolder = new PersonalFolder();
  43. personalFolder.setMailboxId(personalMailboxId);
  44. personalFolder.setName(item);
  45. personalFolder.setSyncStatus(1);
  46. personalFolder.setDelFlag(0);
  47. return personalFolder;
  48. }).collect(Collectors.toList());
  49. personalFolderService.saveBatch(personalFolderList);
  50. } catch (MessagingException e) {
  51. throw new ServiceException("连接邮箱异常");
  52. }
  53. personalMailbox.setId(personalMailboxId);
  54. personalMailbox.setStatus(1);
  55. personalMailbox.setSyncStatus(1);
  56. personalMailbox.setDefaultStatus(0);
  57. personalMailbox.setDelFlag(0);
  58. this.save(personalMailbox);
  59. }
  60. }