Ver Fonte

解耦,修改邮件与业务的交互逻辑

chenkq há 4 dias atrás
pai
commit
d3e0c8133a
100 ficheiros alterados com 235 adições e 4049 exclusões
  1. 0 157
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/QQEmailReceiver.java
  2. 0 53
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/QQEmailSender.java
  3. 0 129
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/IMAPConnection.java
  4. 0 27
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/IMAPConnectionFactory.java
  5. 0 21
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/MailConnection.java
  6. 0 26
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/MailConnectionFactory.java
  7. 0 126
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/POP3Connection.java
  8. 0 26
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/POP3ConnectionFactory.java
  9. 0 53
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/SMTPConnection.java
  10. 0 25
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/SMTPConnectionFactory.java
  11. 0 93
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/client/MailConnectionUtil.java
  12. 0 48
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/client/MailReceiverUtil.java
  13. 0 38
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/client/MailSenderUtil.java
  14. 0 43
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/config/MailProperties.java
  15. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/AttachmentMapper.java
  16. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/ClientSentEmailsMapper.java
  17. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailBlacklistRecordMapper.java
  18. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailFileFolderMapper.java
  19. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailFolderRuleMapper.java
  20. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailFoldersMapper.java
  21. 0 10
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailSignatureMapper.java
  22. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailTemplatesMapper.java
  23. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/FoldersMapper.java
  24. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/MailDelayPullRecordMapper.java
  25. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/MailServerPortConfigMapper.java
  26. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/MailTempAttachmentMapper.java
  27. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/MailboxAutoReplySetMapper.java
  28. 10 0
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/MktMailMessageMapper.java
  29. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/SmtpPopSettingsMapper.java
  30. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/UserEmailFolderMapper.java
  31. 0 16
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/UserMailTrackRecordMapper.java
  32. 0 14
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/AbstractMailFunctionApiFactory.java
  33. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/AttachmentServiceImpl.java
  34. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/ClientSentEmailsServiceImpl.java
  35. 0 38
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailBlacklistRecordServiceImpl.java
  36. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailFileFolderServiceImpl.java
  37. 0 77
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailFolderRuleServiceImpl.java
  38. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailFoldersServiceImpl.java
  39. 0 46
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailSignatureServiceImpl.java
  40. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailTemplatesServiceImpl.java
  41. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/FoldersServiceImpl.java
  42. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/MailDelayPullRecordServiceImpl.java
  43. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/MailServerPortConfigServiceImpl.java
  44. 0 101
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/MailTempAttachmentServiceImpl.java
  45. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/MailboxAutoReplySetServiceImpl.java
  46. 20 0
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/MktMailMessageServiceImpl.java
  47. 0 67
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/SmtpPopSettingsServiceImpl.java
  48. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/UserEmailFolderServiceImpl.java
  49. 0 20
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/UserMailTrackRecordServiceImpl.java
  50. 0 285
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/EmailHelper.java
  51. 0 203
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/EmailSenderWithThreadLocal.java
  52. 0 174
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/FileExtractor.java
  53. 0 42
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/FileHelper.java
  54. 0 50
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/MailFormatPartUtil.java
  55. 0 97
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/ReceiveMailQueueThreadPool.java
  56. 0 90
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/ZipUtility.java
  57. 0 35
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/AttachmentMapper.xml
  58. 0 66
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/ClientSentEmailsMapper.xml
  59. 0 32
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailBlacklistRecordMapper.xml
  60. 0 33
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailFileFolderMapper.xml
  61. 0 34
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailFolderRuleMapper.xml
  62. 0 33
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailFoldersMapper.xml
  63. 0 26
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailSignatureMapper.xml
  64. 0 35
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailTemplatesMapper.xml
  65. 0 33
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/FoldersMapper.xml
  66. 0 35
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/MailDelayPullRecordMapper.xml
  67. 0 34
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/MailServerPortConfigMapper.xml
  68. 0 37
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/MailTempAttachmentMapper.xml
  69. 0 33
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/MailboxAutoReplySetMapper.xml
  70. 30 0
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/MktMailMessageMapper.xml
  71. 0 37
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/SmtpPopSettingsMapper.xml
  72. 0 32
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/UserEmailFolderMapper.xml
  73. 0 34
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/UserMailTrackRecordMapper.xml
  74. 0 52
      java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/AttachmentEntity.java
  75. 0 175
      java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/ClientSentEmailsEntity.java
  76. 0 44
      java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/FoldersEntity.java
  77. 0 60
      java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/MailDelayPullRecordEntity.java
  78. 0 81
      java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/MailServerPortConfigEntity.java
  79. 0 63
      java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/MailTempAttachmentEntity.java
  80. 145 0
      java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/MktMailMessageEntity.java
  81. 0 48
      java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/UserMailTrackRecordEntity.java
  82. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/AttachmentService.java
  83. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/ClientSentEmailsService.java
  84. 0 19
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailBlacklistRecordService.java
  85. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailFileFolderService.java
  86. 0 22
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailFolderRuleService.java
  87. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailFoldersService.java
  88. 0 15
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailSignatureService.java
  89. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailTemplatesService.java
  90. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/FoldersService.java
  91. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MailDelayPullRecordService.java
  92. 0 24
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MailFunctionService.java
  93. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MailServerPortConfigService.java
  94. 0 27
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MailTempAttachmentService.java
  95. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MailboxAutoReplySetService.java
  96. 12 0
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MktMailMessageService.java
  97. 0 28
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/SmtpPopSettingsService.java
  98. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/UserEmailFolderService.java
  99. 0 16
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/UserMailTrackRecordService.java
  100. 18 27
      java/storlead-message/storlead-message-biz/src/main/java/com/storlead/message/service/impl/MessageTemplateEventDetailServiceImpl.java

+ 0 - 157
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/QQEmailReceiver.java

@@ -1,157 +0,0 @@
-package com.storlead.mail;
-
-import com.sun.mail.imap.DefaultFolder;
-import com.sun.mail.imap.IMAPFolder;
-import com.sun.mail.imap.IMAPStore;
-import lombok.extern.log4j.Log4j2;
-
-import javax.mail.*;
-import javax.mail.search.*;
-import java.io.*;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-24 14:42
- */
-@Log4j2
-public class QQEmailReceiver {
-
-
-    private static final String UID_FILE_PATH = "uids.txt"; // 存储UID的文件路径
-
-    public static void main(String[] args) {
-        String host = "imap.exmail.qq.com"; // QQ邮箱IMAP服务器地址
-        String port = "993"; // QQ邮箱IMAP服务器端口
-        String userName = "chenkaiqiang@lcjs43.wecom.work"; // 你的QQ邮箱地址
-        String password = "-Chenkq1992"; // 你的QQ邮箱授权码
-        //
-        // pnkxmvlldlrmidif
-        Properties properties = new Properties();
-        properties.put("mail.imap.host", host);
-        properties.put("mail.imap.port", port);
-        properties.put("mail.imap.starttls.enable", "true");
-        properties.put("mail.imap.ssl.trust", "*");
-        properties.put("mail.imap.ssl.enable", "true");
-
-        Authenticator auth = new Authenticator() {
-            protected PasswordAuthentication getPasswordAuthentication() {
-                return new PasswordAuthentication(userName, password);
-            }
-        };
-
-        Session session = Session.getInstance(properties,auth);
-        try {
-            IMAPStore store =  (IMAPStore) session.getStore("imap");
-            store.connect();
-//            Folder inbox = store.getFolder("Sent Items");
-            IMAPFolder inbox = (IMAPFolder) store.getFolder("INBOX");
-//            Folder inbox = store.getFolder("INBOX");
-            inbox.open(Folder.READ_WRITE);
-            long lastUID = -1;
-            // 加载已处理的UID
-//            if (lastUID == -1) {
-//                // 首次获取所有邮件
-//                 dateStr = "2001-05-28";
-//            } else {
-//                 dateStr = "2024-05-28"; // 替换为你需要的日期
-//            }
-//            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-//            Date date = dateFormat.parse(dateStr);
-//            SearchTerm searchTerm = new ReceivedDateTerm(ComparisonTerm.GT, date);
-            //<tencent_49C3E81C77FD0CAB1F16CA6F@qq.com>
-//            SearchTerm searchTerm = new HeaderTerm("Message-ID","<tencent_49C3E81C77FD0CAB1F16CA6F@qq.com>");
-
-            SearchTerm searchTerm = new HeaderTerm("Message-ID","<tencent_573CB96038E4DCF91E167FA6@qq.com>");
-            SearchTerm searchTerm1 = new MessageIDTerm("<tencent_573CB96038E4DCF91E167FA6@qq.com>");
-            long start = System.currentTimeMillis();
-
-            Message [] megs = inbox.getMessages();
-            Message [] messages0 = inbox.search(searchTerm);
-            Message [] messages1 = inbox.search(searchTerm,megs);
-            Message [] messages2 = inbox.search(searchTerm1,megs);
-            System.out.println("----耗时"+(System.currentTimeMillis() - start));
-            long maxUID = lastUID;
-            for (Message message : megs) {
-                long uid = inbox.getUID(message);
-                String msguid = message.getHeader("Message-ID")[0];
-                if (message.match(searchTerm1)) {
-                    log.error("找到了 :"+msguid);
-                }
-                log.error("Message-UID = :"+uid);
-                log.error("Message-subject = :"+message.getSubject());
-                log.error("Message-ID = :"+msguid);
-            }
-            inbox.close(false);
-            store.close();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private static Set<Long> loadProcessedUIDs() {
-        Set<Long> uids = new HashSet<>();
-        try (BufferedReader reader = new BufferedReader(new FileReader(UID_FILE_PATH))) {
-            String line;
-            while ((line = reader.readLine()) != null) {
-                uids.add(Long.parseLong(line));
-            }
-        } catch (IOException e) {
-            // 文件不存在或读取错误时返回空集合
-        }
-        return uids;
-    }
-
-    // 保存已处理的UID
-    private static void saveProcessedUIDs(Set<Long> uids) {
-        try (BufferedWriter writer = new BufferedWriter(new FileWriter(UID_FILE_PATH))) {
-            for (Long uid : uids) {
-                writer.write(uid.toString());
-                writer.newLine();
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private static void saveAttachment(BodyPart bodyPart) throws Exception {
-        String fileName = bodyPart.getFileName();
-        int size = bodyPart.getSize();
-        InputStream is = bodyPart.getInputStream();
-//        File file = new File("attachments/" + fileName); // 存储附件的文件夹路径
-//        try (FileOutputStream fos = new FileOutputStream(file)) {
-//            byte[] buffer = new byte[4096];
-//            int bytesRead;
-//            while ((bytesRead = is.read(buffer)) != -1) {
-//                fos.write(buffer, 0, bytesRead);
-//            }
-//        }
-        System.out.println("Saved attachment: " + fileName);
-    }
-
-
-    private static String parseMultipart(Multipart multipart) throws Exception {
-        StringBuilder stringBuilder = new StringBuilder();
-        for (int i = 0; i < multipart.getCount(); i++) {
-            BodyPart bodyPart = multipart.getBodyPart(i);
-            if (bodyPart.isMimeType("text/plain")) {
-                stringBuilder.append(bodyPart.getContent());
-            } else if (bodyPart.isMimeType("text/html")) {
-                stringBuilder.append(bodyPart.getContent());
-            } else if (bodyPart.isMimeType("multipart/alternative")) {
-                parseMultipart((Multipart) bodyPart.getContent());
-            } else if (bodyPart.isMimeType("multipart/*")) {
-                parseMultipart((Multipart) bodyPart.getContent());
-            }else if (Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition())) {
-                saveAttachment(bodyPart);
-            }
-        }
-        return stringBuilder.toString();
-    }
-}

+ 0 - 53
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/QQEmailSender.java

@@ -1,53 +0,0 @@
-package com.storlead.mail;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-24 17:08
- */
-import javax.mail.*;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-import java.util.Properties;
-
-public class QQEmailSender {
-
-
-    public static void main(String[] args) {
-        String host = "smtp.exmail.qq.com"; // QQ邮箱SMTP服务器地址
-        String port = "465"; // QQ邮箱SMTP服务器端口
-        String userName = "chenkaiqiang@lcjs43.wecom.work"; // 你的QQ邮箱地址
-//        String password = "-Chenkq1992";  // 你的QQ邮箱授权码
-        String password = "-Chenkq1992";  // 你的QQ邮箱授权码
-
-        Properties properties = new Properties();
-        properties.put("mail.smtp.host", host);
-        properties.put("mail.smtp.port", port);
-        properties.put("mail.smtp.auth", "true");
-        properties.put("mail.user", userName);
-        properties.put("mail.smtp.starttls.enable", "true");
-        properties.put("mail.smtp.ssl.enable", "true");
-
-        Authenticator auth = new Authenticator() {
-            public PasswordAuthentication getPasswordAuthentication() {
-                return new PasswordAuthentication(userName, password);
-            }
-        };
-
-        Session session = Session.getInstance(properties, auth);
-
-        try {
-            Message message = new MimeMessage(session);
-            message.setFrom(new InternetAddress(userName));
-            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("1217276730@qq.com"));
-            message.setSubject("Test Subject");
-            message.setText("Hello, this is a test email!");
-            Transport.send(message);
-            System.out.println("Email sent successfully!");
-        } catch (MessagingException e) {
-            e.printStackTrace();
-        }
-    }
-}
-

+ 0 - 129
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/IMAPConnection.java

@@ -1,129 +0,0 @@
-package com.storlead.mail.connection;
-
-import com.sun.mail.imap.IMAPFolder;
-import lombok.extern.log4j.Log4j2;
-
-import javax.mail.*;
-import java.util.Objects;
-import java.util.Properties;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 14:55
- */
-@Log4j2
-public class IMAPConnection implements MailConnection {
-    private  Store store;
-    private  Session session;
-    private  String host;
-    private  String port;
-    private  String user;
-    private  String password;
-    private  Boolean tls;
-    private  Boolean ssl;
-    private  IMAPFolder folder;
-
-    public IMAPConnection(String host, String port, String user, String password,Boolean tls,Boolean ssl) {
-        this.host = host;
-        this.port = port;
-        this.user = user;
-        this.password = password;
-        this.tls = tls;
-        this.ssl = ssl;
-    }
-
-    public IMAPConnection(String host, String port, String user, String password) {
-        this.host = host;
-        this.port = port;
-        this.user = user;
-        this.password = password;
-        this.tls = true;
-        this.ssl = true;
-    }
-
-    @Override
-    public void connect() throws MessagingException {
-        Properties properties = new Properties();
-        properties.put("mail.store.protocol", "imap");
-        properties.put("mail.imap.host", host);
-        properties.put("mail.imap.port", port);
-        properties.put("mail.imap.starttls.enable",tls);
-        properties.put("mail.imap.ssl.enable", ssl);
-
-        Authenticator auth = new Authenticator() {
-            protected PasswordAuthentication getPasswordAuthentication() {
-                return new PasswordAuthentication(user, password);
-            }
-        };
-        this.session = Session.getInstance(properties,auth);
-        this.store = session.getStore("imap");
-        this.store.connect();
-    }
-
-    @Override
-    public void close() {
-        try {
-            if (this.store != null && this.store.isConnected()) {
-                this.store.close();
-            }
-            if (this.folder != null) {
-                this.folder.close();
-            }
-            if (this.session != null) {
-                this.session = null;
-            }
-        } catch (MessagingException e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Override
-    public Store getStore() {
-        return this.store;
-    }
-
-    @Override
-    public IMAPFolder getFolder(String folderName) {
-        try {
-            if (Objects.isNull(this.store)) {
-                return null;
-            }
-            this.folder = (IMAPFolder) this.store.getFolder(folderName);
-            return  this.folder;
-        }catch (Exception e) {
-            return null;
-        }
-    }
-
-    @Override
-    public Message getMessageByUid(String uid,String folderName) {
-        try {
-            if (Objects.isNull(this.folder)) {
-                this.folder = getFolder(folderName);
-            }
-            if (!this.folder.isOpen()) {
-                this.folder.open(Folder.READ_ONLY);
-            }
-            Message message = this.folder.getMessageByUID(Long.parseLong(uid));
-            return message;
-        } catch (MessagingException e) {
-            log.error("getMessageByUid -- error --",e);
-            return null;
-        }
-    }
-
-    @Override
-    public String getMessageUid(Message message) {
-        try {
-            Long uid = this.folder.getUID(message);
-            if (Objects.isNull(uid)) {
-                return null;
-            }
-            return String.valueOf(uid);
-        } catch (Exception e) {
-            return null;
-        }
-    }
-}

+ 0 - 27
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/IMAPConnectionFactory.java

@@ -1,27 +0,0 @@
-package com.storlead.mail.connection;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 14:57
- */
-public class IMAPConnectionFactory extends MailConnectionFactory {
-    private final String host;
-    private final String port;
-    private final String user;
-    private final String password;
-
-    public IMAPConnectionFactory(String host, String port, String user, String password) {
-        this.host = host;
-        this.port = port;
-        this.user = user;
-        this.password = password;
-    }
-
-    @Override
-    public MailConnection createConnection() {
-        return new IMAPConnection(host, port, user, password);
-    }
-}
-

+ 0 - 21
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/MailConnection.java

@@ -1,21 +0,0 @@
-package com.storlead.mail.connection;
-
-import javax.mail.Folder;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Store;
-
-public interface MailConnection {
-
-    void connect() throws MessagingException;
-
-    void close();
-
-    Store getStore();
-
-    Folder getFolder(String folderName);
-
-    Message getMessageByUid(String uid,String folderName);
-
-    String getMessageUid(Message message);
-}

+ 0 - 26
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/MailConnectionFactory.java

@@ -1,26 +0,0 @@
-package com.storlead.mail.connection;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 14:56
- */
-public abstract class MailConnectionFactory {
-    public abstract MailConnection createConnection();
-
-    public static MailConnectionFactory getFactory(String protocol, String host, String port, String user, String password) {
-        switch (protocol.toLowerCase()) {
-            case "imap":
-                return new IMAPConnectionFactory(host, port, user, password);
-            case "pop3":
-                return new POP3ConnectionFactory(host, port, user, password);
-            default:
-                throw new IllegalArgumentException("Unsupported protocol: " + protocol);
-        }
-    }
-
-    public static SMTPConnectionFactory getSMTPFactory(String host, String port, String user, String password) {
-        return new SMTPConnectionFactory(host, port, user, password);
-    }
-}

+ 0 - 126
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/POP3Connection.java

@@ -1,126 +0,0 @@
-package com.storlead.mail.connection;
-
-import com.sun.mail.pop3.POP3Folder;
-import lombok.extern.log4j.Log4j2;
-
-import javax.mail.*;
-import javax.mail.search.MessageIDTerm;
-import javax.mail.search.SearchTerm;
-import java.util.Objects;
-import java.util.Properties;
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 15:14
- */
-@Log4j2
-public class POP3Connection implements MailConnection {
-    private  Store store;
-    private  Session session;
-    private  String host;
-    private  String port;
-    private  String user;
-    private  String password;
-    private  Boolean tls;
-    private  Boolean ssl;
-    private  POP3Folder folder;
-
-    public POP3Connection(String host, String port, String user, String password) {
-        this.host = host;
-        this.port = port;
-        this.user = user;
-        this.password = password;
-        this.tls = true;
-        this.ssl = true;
-    }
-
-    public POP3Connection(String host, String port, String user, String password,Boolean tls,Boolean ssl) {
-        this.host = host;
-        this.port = port;
-        this.user = user;
-        this.password = password;
-        this.tls = tls;
-        this.ssl = ssl;
-    }
-    @Override
-    public void connect() throws MessagingException {
-        Properties properties = new Properties();
-        properties.put("mail.store.protocol", "pop3");
-        properties.put("mail.pop3.host", host);
-        properties.put("mail.pop3.port", port);
-        properties.put("mail.pop3.starttls.enable", "true");
-        properties.put("mail.pop3.ssl.enable", "true");
-
-        Authenticator auth = new Authenticator() {
-            protected PasswordAuthentication getPasswordAuthentication() {
-                return new PasswordAuthentication(user, password);
-            }
-        };
-        this.session = Session.getInstance(properties,auth);
-        this.store = session.getStore("pop3");
-        this.store.connect();
-    }
-
-    @Override
-    public void close() {
-        try {
-            if (this.store != null && this.store.isConnected()) {
-                this.store.close();
-            }
-        } catch (MessagingException e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Override
-    public Store getStore() {
-        return this.store;
-    }
-
-    @Override
-    public POP3Folder getFolder(String folderName) {
-        try {
-            if (Objects.isNull(this.store)) {
-                log.error("store is null --- address ---"+this.user);
-                return null;
-            }
-            this.folder = (POP3Folder)this.store.getFolder(folderName);
-            return this.folder;
-        }catch (Exception e) {
-            log.error("store is null --- Exception ---"+this.user,e);
-            return null;
-        }
-    }
-
-    @Override
-    public Message getMessageByUid(String messageId,String folderName) {
-        try {
-            if (Objects.isNull(this.folder)) {
-                this.folder = getFolder(folderName);
-            }
-            SearchTerm searchTerm = new MessageIDTerm(messageId);
-            if (!this.folder.isOpen()) {
-                this.folder.open(Folder.READ_ONLY);
-            }
-            Message [] messages = folder.search(searchTerm);
-            if (messages.length > 0) {
-                return messages[0];
-            }
-            return null;
-        } catch (MessagingException e) {
-            log.error("getMessageByUid -- error",e);
-            return null;
-        }
-    }
-
-    @Override
-    public String getMessageUid(Message message) {
-        try {
-           return this.folder.getUID(message);
-        } catch (Exception e) {
-            return null;
-        }
-    }
-}
-

+ 0 - 26
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/POP3ConnectionFactory.java

@@ -1,26 +0,0 @@
-package com.storlead.mail.connection;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 15:22
- */
-public class POP3ConnectionFactory extends MailConnectionFactory {
-    private final String host;
-    private final String port;
-    private final String user;
-    private final String password;
-
-    public POP3ConnectionFactory(String host, String port, String user, String password) {
-        this.host = host;
-        this.port = port;
-        this.user = user;
-        this.password = password;
-    }
-
-    @Override
-    public MailConnection createConnection() {
-        return new POP3Connection(host, port, user, password);
-    }
-}

+ 0 - 53
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/SMTPConnection.java

@@ -1,53 +0,0 @@
-package com.storlead.mail.connection;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 15:23
- */
-import javax.mail.*;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-import java.util.Properties;
-
-public class SMTPConnection {
-    private Session session;
-    private final String host;
-    private final String port;
-    private final String user;
-    private final String password;
-
-    public SMTPConnection(String host, String port, String user, String password) {
-        this.host = host;
-        this.port = port;
-        this.user = user;
-        this.password = password;
-    }
-
-    public void connect() {
-        Properties properties = new Properties();
-        properties.put("mail.smtp.auth", "true");
-        properties.put("mail.smtp.starttls.enable", "true");
-        properties.put("mail.smtp.host", host);
-        properties.put("mail.smtp.port", port);
-        properties.put("mail.smtp.ssl.enable", "true");
-
-        session = Session.getInstance(properties, new Authenticator() {
-            @Override
-            protected PasswordAuthentication getPasswordAuthentication() {
-                return new PasswordAuthentication(user, password);
-            }
-        });
-    }
-
-    public void sendEmail(String toAddress, String subject, String message) throws MessagingException {
-        Message mimeMessage = new MimeMessage(session);
-        mimeMessage.setFrom(new InternetAddress(user));
-        mimeMessage.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddress));
-        mimeMessage.setSubject(subject);
-        mimeMessage.setText(message);
-        Transport.send(mimeMessage);
-    }
-}
-

+ 0 - 25
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/SMTPConnectionFactory.java

@@ -1,25 +0,0 @@
-package com.storlead.mail.connection;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 15:23
- */
-public class SMTPConnectionFactory {
-    private final String host;
-    private final String port;
-    private final String user;
-    private final String password;
-
-    public SMTPConnectionFactory(String host, String port, String user, String password) {
-        this.host = host;
-        this.port = port;
-        this.user = user;
-        this.password = password;
-    }
-
-    public SMTPConnection createConnection() {
-        return new SMTPConnection(host, port, user, password);
-    }
-}

+ 0 - 93
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/client/MailConnectionUtil.java

@@ -1,93 +0,0 @@
-package com.storlead.mail.connection.client;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 16:26
- */
-import com.storlead.mail.connection.MailConnection;
-import com.storlead.mail.connection.MailConnectionFactory;
-import com.storlead.mail.connection.*;
-import com.storlead.mail.connection.config.MailProperties;
-import lombok.extern.log4j.Log4j2;
-
-import javax.mail.*;
-import java.util.concurrent.ConcurrentHashMap;
-
-@Log4j2
-public class MailConnectionUtil {
-
-    public static ConcurrentHashMap<String, MailConnection> chatMailConnectionMap = new ConcurrentHashMap<>();
-    // Method to receive emails using IMAP
-
-    public static MailConnection receiveEmailsConnection(MailProperties properties) {
-        try {
-//            if (Objects.nonNull(chatMailConnectionMap.get(properties.getEmailAddress()+"_"+properties.get))) {
-//                return chatMailConnectionMap.get(properties.getEmailAddress());
-//            }
-            MailConnectionFactory factory = MailConnectionFactory.getFactory(properties.getProtocol(),properties.getHost(),properties.getPort(),properties.getEmailAddress(),properties.getEmailPassword());
-            MailConnection imapConnection  = factory.createConnection();
-            log.error("mailConnection -- testImap == "+properties.getProtocol()+"------"+imapConnection);
-            imapConnection.connect();
-//            chatMailConnectionMap.put(properties.getEmailAddress(),imapConnection);
-            return imapConnection;
-        } catch (MessagingException e) {
-//            e.printStackTrace();
-            log.error("connection error mail --"+properties.getEmailAddress(),e);
-//            chatMailConnectionMap.remove(properties.getEmailAddress());
-            return null;
-        }
-    }
-
-    public static MailConnection testReceiveEmailsConnection(MailProperties properties) {
-        try {
-            MailConnectionFactory factory = MailConnectionFactory.getFactory(properties.getProtocol(),properties.getHost(),properties.getPort(),properties.getEmailAddress(),properties.getEmailPassword());
-            MailConnection imapConnection  = factory.createConnection();
-            log.error("mailConnection -- testImap == "+properties.getProtocol()+"------"+imapConnection);
-            imapConnection.connect();
-            return imapConnection;
-        } catch (MessagingException e) {
-//            e.printStackTrace();
-            log.error("connection error mail --"+properties.getEmailAddress(),e);
-            return null;
-        }
-    }
-
-    public static MailConnection deleteEmailsConnection(MailProperties properties) {
-        try {
-            MailConnectionFactory factory = MailConnectionFactory.getFactory(properties.getProtocol(),properties.getHost(),properties.getPort(),properties.getEmailAddress(),properties.getEmailPassword());
-            MailConnection imapConnection  = factory.createConnection();
-            imapConnection.connect();
-            return imapConnection;
-        } catch (MessagingException e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-//    public static void main(String[] args) {
-//        String imapHost = "imap.exmail.qq.com";
-//        String pop3Host = "pop.exmail.qq.com";
-//        String smtpHost = "smtp.exmail.qq.com";
-//        String port = "993";
-//        String smtpPort = "465";
-//        String user = "your_email@example.com"; // Replace with your email
-//        String password = "your_password"; // Replace with your password
-//
-//        try {
-//            System.out.println("Receiving emails using IMAP:");
-//            receiveEmailsIMAP(imapHost, port, user, password);
-//
-//            System.out.println("Receiving emails using POP3:");
-//            receiveEmailsPOP3(pop3Host, port, user, password);
-//
-//            System.out.println("Sending email using SMTP:");
-//            sendEmailSMTP(smtpHost, smtpPort, user, password,
-//                    "recipient@example.com", "Test Subject", "Test Message");
-//
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//    }
-}
-

+ 0 - 48
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/client/MailReceiverUtil.java

@@ -1,48 +0,0 @@
-package com.storlead.mail.connection.client;
-
-import com.storlead.mail.connection.MailConnection;
-import com.storlead.mail.connection.MailConnectionFactory;
-
-import javax.mail.*;
-import java.util.Arrays;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 16:31
- */
-
-public class MailReceiverUtil {
-    public static void receiveInboxEmails(String protocol, String host, String port, String user, String password) {
-        receiveEmails(protocol, host, port, user, password, "INBOX");
-    }
-
-    public static void receiveSentEmails(String protocol, String host, String port, String user, String password) {
-        receiveEmails(protocol, host, port, user, password, "Sent");
-    }
-
-    private static void receiveEmails(String protocol, String host, String port, String user, String password, String folderName) {
-        MailConnectionFactory connectionFactory = MailConnectionFactory.getFactory(protocol, host, port, user, password);
-        MailConnection mailConnection = connectionFactory.createConnection();
-        try {
-            mailConnection.connect();
-            Store store = mailConnection.getStore();
-            Folder folder = store.getFolder(folderName);
-            folder.open(Folder.READ_WRITE);
-            Message[] messages = folder.getMessages();
-            for (Message message : messages) {
-                System.out.println(protocol.toUpperCase() + " - Subject: " + message.getSubject());
-                System.out.println(protocol.toUpperCase() + " - From: " + Arrays.toString(message.getFrom()));
-                System.out.println("------------------------------------------------");
-            }
-
-            folder.close(false);
-        } catch (MessagingException e) {
-            e.printStackTrace();
-        } finally {
-            mailConnection.close();
-        }
-    }
-}
-

+ 0 - 38
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/client/MailSenderUtil.java

@@ -1,38 +0,0 @@
-package com.storlead.mail.connection.client;
-
-import com.storlead.mail.connection.MailConnectionFactory;
-import com.storlead.mail.connection.SMTPConnection;
-import com.storlead.mail.connection.SMTPConnectionFactory;
-
-import javax.mail.MessagingException;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 16:34
- */
-public class MailSenderUtil {
-    public static void sendEmail(String host, String port, String user, String password,
-                                 String toAddress, String subject, String messageContent) {
-        SMTPConnectionFactory smtpFactory = MailConnectionFactory.getSMTPFactory(host, port, user, password);
-        SMTPConnection smtpConnection = smtpFactory.createConnection();
-        try {
-            smtpConnection.connect();
-            smtpConnection.sendEmail(toAddress, subject, messageContent);
-        } catch (MessagingException e) {
-            e.printStackTrace();
-        }
-    }
-
-    public static void main(String[] args) {
-        String smtpHost = "smtp.exmail.qq.com";
-        String smtpPort = "465";
-        String user = "your_email@example.com"; // Replace with your email
-        String password = "your_password"; // Replace with your password
-
-        System.out.println("Sending email using SMTP:");
-        sendEmail(smtpHost, smtpPort, user, password,
-                "recipient@example.com", "Test Subject", "Test Message");
-    }
-}

+ 0 - 43
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/connection/config/MailProperties.java

@@ -1,43 +0,0 @@
-package com.storlead.mail.connection.config;
-
-import com.storlead.framework.common.util.encryptor.AccessKeyEncryptor;
-import com.storlead.mail.pojo.entity.SmtpPopSettingsEntity;
-import lombok.Data;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 16:59
- */
-@Data
-public class MailProperties {
-
-    private String protocol;
-
-    private String host;
-
-    private String port;
-
-    private String emailAddress;
-
-    private String emailPassword;
-
-    private Boolean tls;
-
-    private Boolean ssl;
-
-
-    public MailProperties(SmtpPopSettingsEntity smtpPop) {
-        AccessKeyEncryptor accessKeyEncryptor = AccessKeyEncryptor.getAccessKeyEncryptor("");
-        String pass = accessKeyEncryptor.decrypt(smtpPop.getEmailPassword());
-        this.host = smtpPop.getReceiveServer() ;
-        this.port = smtpPop.getReceivePort();
-        this.emailAddress = smtpPop.getEmailAddress();
-        this.emailPassword = pass;
-        this.tls = Integer.valueOf(1).equals(smtpPop.getSmtpTls()) ? Boolean.TRUE : Boolean.FALSE;
-        this.ssl = Integer.valueOf(1).equals(smtpPop.getSmtpSsl()) ? Boolean.TRUE : Boolean.FALSE;
-        this.protocol = smtpPop.getProtocolType();
-    }
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/AttachmentMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.AttachmentEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 附件�Mapper 接�
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-public interface AttachmentMapper extends MailBaseMapper<AttachmentEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/ClientSentEmailsMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.ClientSentEmailsEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 邮件�Mapper 接�
- * </p>
- *
- * @author chenkq
- * @since 2024-12-04
- */
-public interface ClientSentEmailsMapper extends MailBaseMapper<ClientSentEmailsEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailBlacklistRecordMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.EmailBlacklistRecordEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 邮箱黑��Mapper 接�
- * </p>
- *
- * @author chenkq
- * @since 2024-10-31
- */
-public interface EmailBlacklistRecordMapper extends MailBaseMapper<EmailBlacklistRecordEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailFileFolderMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.EmailFileFolderEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 文件�Mapper 接�
- * </p>
- *
- * @author chenkq
- * @since 2024-11-04
- */
-public interface EmailFileFolderMapper extends MailBaseMapper<EmailFileFolderEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailFolderRuleMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.EmailFolderRuleEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 用户邮件文件夹出入规�Mapper 接�
- * </p>
- *
- * @author chenkq
- * @since 2024-11-12
- */
-public interface EmailFolderRuleMapper extends MailBaseMapper<EmailFolderRuleEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailFoldersMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.EmailFoldersEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 邮件文件夹关系表 Mapper 接口
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-public interface EmailFoldersMapper extends MailBaseMapper<EmailFoldersEntity> {
-
-}

+ 0 - 10
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailSignatureMapper.java

@@ -1,10 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.mapper.support.MailBaseMapper;
-import com.storlead.mail.pojo.entity.EmailSignatureEntity;
-
-/**
- * 邮件签名 Mapper
- */
-public interface EmailSignatureMapper extends MailBaseMapper<EmailSignatureEntity> {
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailTemplatesMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.EmailTemplatesEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 邮件模板 Mapper 接口
- * </p>
- *
- * @author chenkq
- * @since 2024-10-28
- */
-public interface EmailTemplatesMapper extends MailBaseMapper<EmailTemplatesEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/FoldersMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.FoldersEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 文件夹��Mapper 接�
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-public interface FoldersMapper extends MailBaseMapper<FoldersEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/MailDelayPullRecordMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.MailDelayPullRecordEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 邮件等待处理记录 Mapper 接口
- * </p>
- *
- * @author chenkq
- * @since 2024-08-24
- */
-public interface MailDelayPullRecordMapper extends MailBaseMapper<MailDelayPullRecordEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/MailServerPortConfigMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.MailServerPortConfigEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 邮箱端口配置 Mapper 接口
- * </p>
- *
- * @author chenkq
- * @since 2024-08-08
- */
-public interface MailServerPortConfigMapper extends MailBaseMapper<MailServerPortConfigEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/MailTempAttachmentMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.MailTempAttachmentEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 临时邮件附件�Mapper 接�
- * </p>
- *
- * @author chenkq
- * @since 2024-08-09
- */
-public interface MailTempAttachmentMapper extends MailBaseMapper<MailTempAttachmentEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/MailboxAutoReplySetMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.MailboxAutoReplySetEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 邮箱自动回复内容 Mapper 接口
- * </p>
- *
- * @author chenkq
- * @since 2025-02-24
- */
-public interface MailboxAutoReplySetMapper extends MailBaseMapper<MailboxAutoReplySetEntity> {
-
-}

+ 10 - 0
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/MktMailMessageMapper.java

@@ -0,0 +1,10 @@
+package com.storlead.mail.mapper;
+
+import com.storlead.mail.mapper.support.MailBaseMapper;
+import com.storlead.mail.pojo.entity.MktMailMessageEntity;
+
+/**
+ * 营销邮件投递 Mapper。
+ */
+public interface MktMailMessageMapper extends MailBaseMapper<MktMailMessageEntity> {
+}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/SmtpPopSettingsMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.SmtpPopSettingsEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 邮箱smtp_setting Mapper 接口
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-public interface SmtpPopSettingsMapper extends MailBaseMapper<SmtpPopSettingsEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/UserEmailFolderMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.UserEmailFolderEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 用户文件�Mapper 接�
- * </p>
- *
- * @author chenkq
- * @since 2024-11-12
- */
-public interface UserEmailFolderMapper extends MailBaseMapper<UserEmailFolderEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/UserMailTrackRecordMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.mapper;
-
-import com.storlead.mail.pojo.entity.UserMailTrackRecordEntity;
-import com.storlead.mail.mapper.support.MailBaseMapper;
-
-/**
- * <p>
- * 当�收�邮件的最新邮件记�Mapper 接�
- * </p>
- *
- * @author chenkq
- * @since 2024-11-19
- */
-public interface UserMailTrackRecordMapper extends MailBaseMapper<UserMailTrackRecordEntity> {
-
-}

+ 0 - 14
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/AbstractMailFunctionApiFactory.java

@@ -1,14 +0,0 @@
-package com.storlead.mail.service.impl;
-
-/**
- * @program: sp-sales-platform
- * @description: 抽象邮件工厂类
- * @author: chenkq
- * @create: 2024-05-29 10:16
- */
-public abstract class  AbstractMailFunctionApiFactory {
-
-    // 收邮件
-
-    // 发送邮件
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/AttachmentServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.AttachmentService;
-import com.storlead.mail.pojo.entity.AttachmentEntity;
-import com.storlead.mail.mapper.AttachmentMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 附件��务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-@Service
-public class AttachmentServiceImpl extends MailDataSourceServiceImpl<AttachmentMapper, AttachmentEntity> implements AttachmentService {
-
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/ClientSentEmailsServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.ClientSentEmailsService;
-import com.storlead.mail.pojo.entity.ClientSentEmailsEntity;
-import com.storlead.mail.mapper.ClientSentEmailsMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 邮件��务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-12-04
- */
-@Service
-public class ClientSentEmailsServiceImpl extends MailDataSourceServiceImpl<ClientSentEmailsMapper, ClientSentEmailsEntity> implements ClientSentEmailsService {
-
-}

+ 0 - 38
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailBlacklistRecordServiceImpl.java

@@ -1,38 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.storlead.mail.service.EmailBlacklistRecordService;
-import com.storlead.mail.pojo.entity.EmailBlacklistRecordEntity;
-import com.storlead.mail.mapper.EmailBlacklistRecordMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- * 邮箱黑���务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-10-31
- */
-@Service
-public class EmailBlacklistRecordServiceImpl extends MailDataSourceServiceImpl<EmailBlacklistRecordMapper, EmailBlacklistRecordEntity> implements EmailBlacklistRecordService {
-
-    @Override
-    public Set<String> getBlackEmaillist(Long userId) {
-        LambdaQueryWrapper<EmailBlacklistRecordEntity> queryWrapper = new LambdaQueryWrapper();
-        queryWrapper.eq(EmailBlacklistRecordEntity::getOwnerBy,userId);
-        queryWrapper.eq(EmailBlacklistRecordEntity::getIsDelete,Integer.valueOf(0));
-        List<EmailBlacklistRecordEntity> blacklist = list(queryWrapper);
-        if(CollectionUtils.isEmpty(blacklist)) {
-            return Collections.emptySet();
-        }
-        return blacklist.stream().map(EmailBlacklistRecordEntity::getEmailAddress).collect(Collectors.toSet());
-    }
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailFileFolderServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.EmailFileFolderService;
-import com.storlead.mail.pojo.entity.EmailFileFolderEntity;
-import com.storlead.mail.mapper.EmailFileFolderMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 文件��务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-11-04
- */
-@Service
-public class EmailFileFolderServiceImpl extends MailDataSourceServiceImpl<EmailFileFolderMapper, EmailFileFolderEntity> implements EmailFileFolderService {
-
-}

+ 0 - 77
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailFolderRuleServiceImpl.java

@@ -1,77 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.storlead.mail.service.EmailFolderRuleService;
-import com.storlead.mail.pojo.entity.EmailFolderRuleEntity;
-import com.storlead.mail.pojo.entity.EmailsEntity;
-import com.storlead.mail.enums.EmailFolderlRuleEnum;
-import com.storlead.mail.mapper.EmailFolderRuleMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * <p>
- * 用户邮件文件夹出入规��务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-11-12
- */
-@Service
-public class EmailFolderRuleServiceImpl extends MailDataSourceServiceImpl<EmailFolderRuleMapper, EmailFolderRuleEntity> implements EmailFolderRuleService {
-
-    @Override
-    public List<EmailFolderRuleEntity> getUserFolderRules(Long userId) {
-        LambdaQueryWrapper<EmailFolderRuleEntity> queryWrapper = new LambdaQueryWrapper();
-        if (Objects.nonNull(userId)) {
-            queryWrapper.eq(EmailFolderRuleEntity::getOwnerBy,userId);
-        }
-        queryWrapper.eq(EmailFolderRuleEntity::getIsDelete,Integer.valueOf(0));
-        queryWrapper.orderByAsc(EmailFolderRuleEntity::getSort);
-        List<EmailFolderRuleEntity> list = this.list(queryWrapper);
-        return list;
-    }
-
-    @Override
-    public void carveUpMailCustomFolder(EmailsEntity emails,List<EmailFolderRuleEntity> rolderRules) {
-        if (CollectionUtils.isEmpty(rolderRules)) {
-            return;
-        }
-        for (EmailFolderRuleEntity rule : rolderRules) {
-            if (EmailFolderlRuleEnum.EMAIL_FROM_EQ.code.equals(rule.getFolderRuleCode())) {
-                // �件箱等�
-                if (emails.getFrom().equals(rule.getCompareContent())) {
-                    emails.setCustomFolderId(rule.getFolderId());
-                    break;
-                }
-            } else if (EmailFolderlRuleEnum.EMAIL_SUBJECT_CONTAINS.code.equals(rule.getFolderRuleCode())) {
-                // 邮件主题包�
-                if (emails.getSubject().contains(rule.getCompareContent())) {
-                    emails.setCustomFolderId(rule.getFolderId());
-                    break;
-                }
-            } else if (EmailFolderlRuleEnum.EMAIL_FROM_SUFFIX_EQ.code.equals(rule.getFolderRuleCode())) {
-                //�件箱�缀等于
-                String domainRegex = "@(.+)$";
-                // 创建 Pattern 对象
-                Pattern pattern = Pattern.compile(domainRegex);
-                // 创建 Matcher 对象
-                Matcher matcher = pattern.matcher(emails.getFrom());
-                // 查找并��@ ��的部�
-                if (matcher.find()) {
-                    String domain = matcher.group(1);  // 获� @ ��的部�
-                    if (rule.getCompareContent().equals(domain)) {
-                        emails.setCustomFolderId(rule.getFolderId());
-                        break;
-                    }
-                }
-            }
-        }
-    }
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailFoldersServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.EmailFoldersService;
-import com.storlead.mail.pojo.entity.EmailFoldersEntity;
-import com.storlead.mail.mapper.EmailFoldersMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 邮件文件夹关系表 服务实现?
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-@Service
-public class EmailFoldersServiceImpl extends MailDataSourceServiceImpl<EmailFoldersMapper, EmailFoldersEntity> implements EmailFoldersService {
-
-}

+ 0 - 46
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailSignatureServiceImpl.java

@@ -1,46 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.storlead.framework.util.LoginUserUtil;
-import com.storlead.mail.mapper.EmailSignatureMapper;
-import com.storlead.mail.pojo.entity.EmailSignatureEntity;
-import com.storlead.mail.service.EmailSignatureService;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.Objects;
-
-/**
- * 邮件签名服务实现
- */
-@Service
-public class EmailSignatureServiceImpl
-        extends MailDataSourceServiceImpl<EmailSignatureMapper, EmailSignatureEntity>
-        implements EmailSignatureService {
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void saveSignature(EmailSignatureEntity entity) {
-        if (entity.getIsDefault() != null && entity.getIsDefault() == 1) {
-            Long ownerBy = entity.getOwnerBy();
-            if (ownerBy == null) {
-                ownerBy = LoginUserUtil.getCurrentUserId();
-            }
-            LambdaUpdateWrapper<EmailSignatureEntity> clearDefault = new LambdaUpdateWrapper<>();
-            clearDefault.set(EmailSignatureEntity::getIsDefault, 0);
-            clearDefault.eq(EmailSignatureEntity::getOwnerBy, ownerBy);
-            clearDefault.eq(EmailSignatureEntity::getIsDelete, 0);
-            if (Objects.nonNull(entity.getSmtpPopId())) {
-                clearDefault.eq(EmailSignatureEntity::getSmtpPopId, entity.getSmtpPopId());
-            } else {
-                clearDefault.isNull(EmailSignatureEntity::getSmtpPopId);
-            }
-            if (Objects.nonNull(entity.getId())) {
-                clearDefault.ne(EmailSignatureEntity::getId, entity.getId());
-            }
-            update(clearDefault);
-        }
-        saveOrUpdate(entity);
-    }
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailTemplatesServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.EmailTemplatesService;
-import com.storlead.mail.pojo.entity.EmailTemplatesEntity;
-import com.storlead.mail.mapper.EmailTemplatesMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 邮件模� �务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-10-28
- */
-@Service
-public class EmailTemplatesServiceImpl extends MailDataSourceServiceImpl<EmailTemplatesMapper, EmailTemplatesEntity> implements EmailTemplatesService {
-
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/FoldersServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.FoldersService;
-import com.storlead.mail.pojo.entity.FoldersEntity;
-import com.storlead.mail.mapper.FoldersMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 文件夹���务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-@Service
-public class FoldersServiceImpl extends MailDataSourceServiceImpl<FoldersMapper, FoldersEntity> implements FoldersService {
-
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/MailDelayPullRecordServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.MailDelayPullRecordService;
-import com.storlead.mail.pojo.entity.MailDelayPullRecordEntity;
-import com.storlead.mail.mapper.MailDelayPullRecordMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 邮件等待处理记录 服务实现?
- * </p>
- *
- * @author chenkq
- * @since 2024-08-24
- */
-@Service
-public class MailDelayPullRecordServiceImpl extends MailDataSourceServiceImpl<MailDelayPullRecordMapper, MailDelayPullRecordEntity> implements MailDelayPullRecordService {
-
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/MailServerPortConfigServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.MailServerPortConfigService;
-import com.storlead.mail.pojo.entity.MailServerPortConfigEntity;
-import com.storlead.mail.mapper.MailServerPortConfigMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 邮箱端��置 �务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-08-08
- */
-@Service
-public class MailServerPortConfigServiceImpl extends MailDataSourceServiceImpl<MailServerPortConfigMapper, MailServerPortConfigEntity> implements MailServerPortConfigService {
-
-}

+ 0 - 101
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/MailTempAttachmentServiceImpl.java

@@ -1,101 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import cn.hutool.core.util.StrUtil;
-import com.storlead.framework.common.util.RandomGenerateHelper;
-import com.storlead.mail.properties.MailFileProperties;
-import com.storlead.mail.service.MailTempAttachmentService;
-import com.storlead.mail.pojo.entity.MailTempAttachmentEntity;
-import com.storlead.mail.mapper.MailTempAttachmentMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.mail.internet.MimeUtility;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.UUID;
-
-/**
- * <p>
- * 临时邮件附件��务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-08-09
- */
-@Service
-public class MailTempAttachmentServiceImpl extends MailDataSourceServiceImpl<MailTempAttachmentMapper, MailTempAttachmentEntity> implements MailTempAttachmentService {
-
-    @Resource
-    private MailFileProperties mailFileProperties;
-
-    @Override
-    public MailTempAttachmentEntity saveAttachmentToDatabase(File file, String code,Long mailId) {
-
-        String fileName = StrUtil.isBlank(code) ? file.getName() : file.getName().replace("."+code,"");
-        MailTempAttachmentEntity attachment = new MailTempAttachmentEntity();
-        attachment.setEmailId(mailId);
-        attachment.setFileCode(code);
-        attachment.setFileName(FilenameUtils.getBaseName(fileName));
-        attachment.setFilePath(file.getAbsolutePath().replace(mailFileProperties.getPath().getPath(),""));
-        attachment.setFileExt(FilenameUtils.getExtension(fileName));
-        attachment.setFileSize(file.length());
-        this.save(attachment);
-        return attachment;
-    }
-
-    @Override
-    public Long saveTempAttachment(MultipartFile file, String downloadDir, Long mailId) {
-        try {
-            String fileName = file.getOriginalFilename();
-            fileName = MimeUtility.decodeText(fileName);
-            fileName = fileName.replace("\n", "").replace("\r", "");
-            String code =  RandomGenerateHelper.generateRandomString(6);
-            // 如果�存在这创建路径
-            if (!new File(downloadDir).exists()) {
-                new File(downloadDir).mkdirs();
-            }
-            fileName = fileName+"."+code;
-            File filePath = new File(downloadDir +  File.separator + fileName);
-            try (FileOutputStream output = new FileOutputStream(filePath)) {
-                file.getInputStream().transferTo(output);
-            }
-            MailTempAttachmentEntity attachment = saveAttachmentToDatabase(filePath,code, mailId);
-            return attachment.getId();
-        }catch (Exception e) {
-            log.error("--upload -- saveTempAttachment --error --",e);
-            return null;
-        }
-    }
-
-    @Override
-    public MailTempAttachmentEntity saveTempImageAttachment(MultipartFile file, String downloadDir) {
-        try {
-            String fileName = file.getOriginalFilename();
-            fileName = MimeUtility.decodeText(fileName);
-            fileName = fileName.replace("\n", "").replace("\r", "");
-            String extension =  FilenameUtils.getExtension(fileName);
-            String timestamp = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
-            String uniqueId = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 8);
-
-            String newFileName = "image_" + timestamp + "_" + uniqueId + "." + extension;
-            // 如果�存在这创建路径
-            if (!new File(downloadDir).exists()) {
-                new File(downloadDir).mkdirs();
-            }
-            File filePath = new File(downloadDir +  File.separator + newFileName);
-            try (FileOutputStream output = new FileOutputStream(filePath)) {
-                file.getInputStream().transferTo(output);
-            }
-            MailTempAttachmentEntity attachment = saveAttachmentToDatabase(filePath,"", null);
-            return attachment;
-        }catch (Exception e) {
-            log.error("--upload -- saveTempAttachment --error --",e);
-            return null;
-        }
-    }
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/MailboxAutoReplySetServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.MailboxAutoReplySetService;
-import com.storlead.mail.pojo.entity.MailboxAutoReplySetEntity;
-import com.storlead.mail.mapper.MailboxAutoReplySetMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 邮箱自动回复内容 服务实现?
- * </p>
- *
- * @author chenkq
- * @since 2025-02-24
- */
-@Service
-public class MailboxAutoReplySetServiceImpl extends MailDataSourceServiceImpl<MailboxAutoReplySetMapper, MailboxAutoReplySetEntity> implements MailboxAutoReplySetService {
-
-}

+ 20 - 0
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/MktMailMessageServiceImpl.java

@@ -0,0 +1,20 @@
+package com.storlead.mail.service.impl;
+
+import com.storlead.mail.mapper.MktMailMessageMapper;
+import com.storlead.mail.pojo.entity.MktMailMessageEntity;
+import com.storlead.mail.service.MktMailMessageService;
+import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.stereotype.Service;
+import javax.mail.*;
+import java.util.*;
+
+
+/**
+ * 营销邮件:对齐 CRM 草稿 / 附件 / 延时 / 发送,成功后写入 mkt_mail_attachment。
+ */
+@Log4j2
+@Service
+public class MktMailMessageServiceImpl extends MailDataSourceServiceImpl<MktMailMessageMapper, MktMailMessageEntity> implements MktMailMessageService {
+
+}

+ 0 - 67
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/SmtpPopSettingsServiceImpl.java

@@ -1,67 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.storlead.framework.common.constant.CommonConstant;
-import com.storlead.mail.service.SmtpPopSettingsService;
-import com.storlead.mail.pojo.entity.SmtpPopSettingsEntity;
-import com.storlead.mail.mapper.SmtpPopSettingsMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * <p>
- * 邮箱smtp_setting �务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-@Service
-public class SmtpPopSettingsServiceImpl extends MailDataSourceServiceImpl<SmtpPopSettingsMapper, SmtpPopSettingsEntity> implements SmtpPopSettingsService {
-
-    @Override
-    public SmtpPopSettingsEntity getDefaultSmtpPop(Long userId) {
-        LambdaQueryWrapper<SmtpPopSettingsEntity> wrapper = new LambdaQueryWrapper();
-        wrapper.eq(SmtpPopSettingsEntity::getOwnerBy,userId);
-        wrapper.eq(SmtpPopSettingsEntity::getIsDelete,CommonConstant.DEL_FLAG_0);
-        wrapper.eq(SmtpPopSettingsEntity::getUseDefault,Integer.valueOf(1));
-        wrapper.last(" limit 1");
-        SmtpPopSettingsEntity entity = this.getOne(wrapper);
-        return entity;
-    }
-
-    @Override
-    public SmtpPopSettingsEntity getSystemSmtpPop(Long popId) {
-        SmtpPopSettingsEntity entity = this.getById(popId);
-        return entity;
-    }
-
-    @Override
-    public List<SmtpPopSettingsEntity> getDefaultSmtpPopls(Set userIds){
-        LambdaQueryWrapper<SmtpPopSettingsEntity> wrapper = new LambdaQueryWrapper();
-        wrapper.in(SmtpPopSettingsEntity::getOwnerBy,userIds);
-        wrapper.eq(SmtpPopSettingsEntity::getUseDefault,Integer.valueOf(1));
-        List<SmtpPopSettingsEntity> entityls = this.list(wrapper);
-        return entityls;
-    }
-    @Override
-    public List<SmtpPopSettingsEntity> getEmailAccount(Long userId) {
-        LambdaQueryWrapper<SmtpPopSettingsEntity> wrapper = new LambdaQueryWrapper();
-        wrapper.eq(SmtpPopSettingsEntity::getOwnerBy,userId);
-        wrapper.eq(SmtpPopSettingsEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
-        return this.list(wrapper);
-    }
-
-    @Override
-    public SmtpPopSettingsEntity getEmailByAccountPopId(Long userId, Long popId) {
-        LambdaQueryWrapper<SmtpPopSettingsEntity> wrapper = new LambdaQueryWrapper();
-        wrapper.eq(SmtpPopSettingsEntity::getOwnerBy,userId);
-        wrapper.eq(SmtpPopSettingsEntity::getId,popId);
-        wrapper.eq(SmtpPopSettingsEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
-        wrapper.last("limit 1");
-        return this.getOne(wrapper);
-    }
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/UserEmailFolderServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.UserEmailFolderService;
-import com.storlead.mail.pojo.entity.UserEmailFolderEntity;
-import com.storlead.mail.mapper.UserEmailFolderMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 用户文件��务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-11-12
- */
-@Service
-public class UserEmailFolderServiceImpl extends MailDataSourceServiceImpl<UserEmailFolderMapper, UserEmailFolderEntity> implements UserEmailFolderService {
-
-}

+ 0 - 20
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/UserMailTrackRecordServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.mail.service.impl;
-
-import com.storlead.mail.service.UserMailTrackRecordService;
-import com.storlead.mail.pojo.entity.UserMailTrackRecordEntity;
-import com.storlead.mail.mapper.UserMailTrackRecordMapper;
-import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 当�收�邮件的最新邮件记��务实现�
- * </p>
- *
- * @author chenkq
- * @since 2024-11-19
- */
-@Service
-public class UserMailTrackRecordServiceImpl extends MailDataSourceServiceImpl<UserMailTrackRecordMapper, UserMailTrackRecordEntity> implements UserMailTrackRecordService {
-
-}

+ 0 - 285
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/EmailHelper.java

@@ -1,285 +0,0 @@
-package com.storlead.mail.util;
-
-import lombok.extern.log4j.Log4j2;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.mail.javamail.MimeMessageHelper;
-
-import javax.activation.DataHandler;
-import javax.activation.DataSource;
-import javax.activation.FileDataSource;
-import javax.mail.Multipart;
-import javax.mail.Part;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.util.ByteArrayDataSource;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-12-13 10:20
- */
-@Log4j2
-public class EmailHelper {
-    private static final Map<String, String> mimeToExtensionMap = new HashMap<>();
-
-    static {
-        mimeToExtensionMap.put("image/png", "png");
-        mimeToExtensionMap.put("image/jpeg", "jpg");
-        mimeToExtensionMap.put("image/gif", "gif");
-        mimeToExtensionMap.put("application/pdf", "pdf");
-        mimeToExtensionMap.put("text/plain", "txt");
-        // 根据需要继续添加其他 MIME 类型映射
-    }
-    /**
-     * 将 HTML 内容中的 img 标签的 src URL 转换为 cid:imageX 格式。
-     *
-     * @param htmlContent 邮件的 HTML 内容
-     * @param imagePathMap 图片路径的映射
-     * @return 修改后的 HTML 内容
-     * @throws
-     */
-    public static String convertImageUrlsToCid(String htmlContent, Map<String, File> imagePathMap,String filePath) {
-        Document doc = Jsoup.parse(htmlContent);  // 使用 Jsoup 解析 HTML 内容
-
-        // 遍历所有 img 标签
-        for (Element img : doc.select("img")) {
-            String src = img.attr("src");  // 获取 src 属性(图片 URL)
-
-            // 如果 src 是一个有效的 URL,且需要转换为 CID
-            if (src != null && !src.isEmpty()) {
-                // 根据图片的 URL 为每个图片生成唯一的 CID
-                String cid = "image" + imagePathMap.size() + 1;  // 简单的 CID 生成规则,可以改成更复杂的逻辑
-                img.attr("src", "cid:" + cid);  // 将 src 转换为 cid:imageX 格式
-                // 将图片路径和生成的 CID 映射保存
-                String downloadDir = filePath;
-                String imageName = src.replace("/sales/mail/file/images/","/");
-                String url = downloadDir + imageName;
-                imagePathMap.put(cid, new File(url));
-            }
-        }
-
-        return doc.html();  // 返回修改后的 HTML 内容
-    }
-
-    public static String getFileExtensionFromBase64(String base64Data) {
-        // 1. 先检查是否包含 `data:` URL 格式
-        if (base64Data.startsWith("data:")) {
-            // 从 `data:[mediatype];base64,` 中提取 MIME 类型
-            String mimeTypePart = base64Data.split(";")[0];  // 例如:data:image/png
-            String mimeType = mimeTypePart.substring(5);  // 去掉 "data:",例如 "image/png"
-
-            // 2. 查找扩展名
-            return mimeToExtensionMap.getOrDefault(mimeType, "unknown");  // 返回对应的扩展名
-        } else {
-            throw new IllegalArgumentException("Invalid Base64 format. Expected data URL format.");
-        }
-    }
-
-    public static MimeBodyPart createBase64BodyPart(String base64Data, String contentType,String extension)  {
-        // 1. 解码 Base64 数据
-        try {
-
-            String timestamp = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
-            String uniqueId = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 8);
-
-            String newFileName = "image_" + timestamp + "_" + uniqueId + "." + extension;
-            byte[] decodedData = Base64.getDecoder().decode(base64Data);
-            // 2. 创建 ByteArrayDataSource,将解码后的数据作为输入流
-            // 3. 创建 MimeBodyPart,并设置数据源
-            MimeBodyPart mimeBodyPart = new MimeBodyPart();
-            DataSource dataSource = new ByteArrayDataSource(decodedData, contentType);
-            mimeBodyPart.setDataHandler(new DataHandler(dataSource));
-            // 4. 设置文件名(可选)
-            mimeBodyPart.setFileName(newFileName);  // 根据需要设置文件名和扩展名
-            return mimeBodyPart;
-        }catch (Exception e) {
-            log.error("convertImageUrlsToCidBodyPart -- error",e);
-            return null;
-        }
-    }
-
-    public static String convertImageUrlsToCidBodyPart(String htmlContent, List<MimeBodyPart> imageParts, String filePath, Multipart multipart) {
-        Document doc = Jsoup.parse(htmlContent);  // 使用 Jsoup 解析 HTML 内容
-
-        Integer i = 0;
-        // 遍历所有 img 标签
-        for (Element img : doc.select("img")) {
-            try {
-                i ++ ;
-
-                String src = img.attr("src");
-                String cid = "image_sp_" + i;
-                if (src.startsWith("data:image/")) {
-                    // 如果 src 是一个有效的 URL,且需要转换为 CID
-                    String mimeTypePart = src.split(";")[0];  // 例如:data:image/png
-                    String mimeType = mimeTypePart.substring(5);    // 去掉 "data:",例如 "image/png"
-                    // 3. 根据 MIME 类型推断扩展名
-                    String extension = mimeToExtensionMap.getOrDefault(mimeType, "unknown");
-                    // 4. 提取 Base64 编码的内容(去掉前缀 "data:image/png;base64,")
-                    String base64Content = src.split(",")[1];
-                    MimeBodyPart imagePart = createBase64BodyPart(base64Content, mimeType,extension);
-                    imagePart.setHeader("Content-ID", cid);
-                    img.attr("src", "cid:" + cid);
-                    imagePart.setDisposition(Part.INLINE);  // 设置为内嵌
-                    multipart.addBodyPart(imagePart);
-                }else if (src.contains("https://sales.storlead.com/sales/mail")){
-                    if (src != null && !src.isEmpty()) {
-                        // 根据图片的 URL 为每个图片生成唯一的 CID
-                        img.attr("src", "cid:" + cid);  // 将 src 转换为 cid:imageX 格式
-                    }
-                    MimeBodyPart imagePart = createImagePartFromURL(src,cid);
-                    multipart.addBodyPart(imagePart);
-
-                } else if (src.contains("/sales/mail/file/images/")){
-                    if (src != null && !src.isEmpty()) {
-                        // 根据图片的 URL 为每个图片生成唯一的 CID
-                        img.attr("src", "cid:" + cid);  // 将 src 转换为 cid:imageX 格式
-                    }
-                    String downloadDir = filePath;
-                    String imageName = src.replace("/sales/mail/file/images/", "");
-                    String imagePath = downloadDir + imageName;
-                    MimeBodyPart imagePart = new MimeBodyPart();
-                    DataSource source = new FileDataSource(imagePath);
-                    imagePart.setDataHandler(new DataHandler(source));
-                    imagePart.setHeader("Content-ID", cid);
-                    imagePart.setDisposition(Part.INLINE);  // 设置为内嵌
-                    multipart.addBodyPart(imagePart);
-
-                }
-                // 获取 src 属性(图片 URL)
-
-            }catch (Exception e ) {
-                log.error("convertImageUrlsToCidBodyPart -- error",e);
-            }
-        }
-        return doc.html();  // 返回修改后的 HTML 内容
-    }
-    public static MimeBodyPart createImagePartFromURL(String imageUrl,String cid) throws Exception {
-        // 从URL加载图片
-        URL url = new URL(imageUrl);
-        try (InputStream inputStream = url.openStream()) {
-            byte[] imageBytes = inputStream.readAllBytes();
-            DataSource dataSource = new ByteArrayDataSource(imageBytes, "image/jpeg");  // 根据图片类型选择MIME类型
-            MimeBodyPart imagePart = new MimeBodyPart();
-            imagePart.setDataHandler(new javax.activation.DataHandler(dataSource));
-            String fileNameWithExtension = Paths.get(url.getPath()).getFileName().toString();
-            String fileNameWithoutExtension = fileNameWithExtension.substring(0, fileNameWithExtension.lastIndexOf('.'));
-            imagePart.setFileName(fileNameWithoutExtension);  // 设置附件名称去掉后缀
-            imagePart.setHeader("Content-ID", cid);
-            imagePart.setDisposition(Part.INLINE);  // 设置为内嵌
-            return imagePart;
-        }
-    }
-
-    public static String convertImageUrlsToBase(String htmlContent, String filePath) {
-        Document doc = Jsoup.parse(htmlContent);  // 使用 Jsoup 解析 HTML 内容
-        String downloadDir = filePath;
-
-        // 遍历所有 img 标签
-        for (Element img : doc.select("img")) {
-            String src = img.attr("src");  // 获取 src 属性(图片 URL)
-            String imageName = src.replace("/sales/mail/file/images/", "");
-            String imgSrc = downloadDir + imageName;
-            String base64Image = convertImageToFileBase64(imgSrc);
-            String imageExtension = imgSrc.substring(imgSrc.lastIndexOf('.') + 1);
-            // 构造 base64 数据 URI
-            String base64DataUri = "data:image/" + imageExtension + ";base64," + base64Image;
-            // 将图片的 src 属性替换为 base64 数据 URI
-            img.attr("src", base64DataUri);
-        }
-
-        return doc.html();  // 返回修改后的 HTML 内容
-    }
-
-    private static String convertImageToBase64(String imageUrl) {
-        try {
-            URL url = new URL(imageUrl);
-            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-            connection.setRequestMethod("GET");
-            connection.setDoOutput(true);
-            connection.connect();
-
-            // 从连接中读取图片数据
-            try (InputStream in = connection.getInputStream()) {
-                byte[] imageBytes = in.readAllBytes();  // 读取所有图片字节
-                return Base64.getEncoder().encodeToString(imageBytes);  // 转换为 Base64 编码
-            }
-        }catch (Exception e) {
-            log.error("convertImageToBase64 -- error",e);
-        }
-        return null;
-    }
-    public static String convertImageToFileBase64(String imagePath)  {
-        try {
-        // 读取图片文件
-        byte[] imageBytes = Files.readAllBytes(Paths.get(imagePath));
-
-        // 使用 Base64 编码将图片字节数组转换为字符串
-        return Base64.getEncoder().encodeToString(imageBytes);
-        }catch (Exception e) {
-            log.error("convertImageToBase64 -- error",e);
-        }
-        return null;
-    }
-    /**
-     * 将图片添加到邮件附件中,并返回一个 Map 映射,包含每个图片的 CID 和对应的 File。
-     *
-     * @param imagePathMap 图片路径的映射
-     * @param helper       MimeMessageHelper
-     * @throws
-     */
-    public static void addImagesToMail(Map<String, File> imagePathMap, MimeMessageHelper helper)  {
-        // 遍历 Map,将每个图片作为附件添加到邮件中
-        try {
-            for (Map.Entry<String, File> entry : imagePathMap.entrySet()) {
-                String cid = entry.getKey();
-                File imageFile = entry.getValue();
-
-                // 添加内嵌图片,Content-ID 用于在 HTML 中引用
-                helper.addInline(cid, imageFile);
-            }
-        }catch (Exception e) {
-        }
-    }
-
-    private static File downloadImage(String imageUrl) {
-
-        try {
-            URL url = new URL(imageUrl);
-            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-            connection.setRequestMethod("GET");
-            connection.setDoOutput(true);
-            connection.connect();
-
-            String tempDir = System.getProperty("java.io.tmpdir");
-            String imageName = UUID.randomUUID().toString() + ".jpg";  // 根据实际类型修改
-            File tempImage = new File(tempDir, imageName);
-
-            try (InputStream in = connection.getInputStream();
-                 OutputStream out = new FileOutputStream(tempImage)) {
-                byte[] buffer = new byte[4096];
-                int bytesRead;
-                while ((bytesRead = in.read(buffer)) != -1) {
-                    out.write(buffer, 0, bytesRead);
-                }
-            }
-            return tempImage;
-        }catch (Exception e ) {
-            log.error("downloadImage -- error",e);
-            return null;
-        }
-    }
-}

+ 0 - 203
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/EmailSenderWithThreadLocal.java

@@ -1,203 +0,0 @@
-package com.storlead.mail.util;
-
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.storlead.framework.common.util.SpringContextUtils;
-import com.storlead.mail.pojo.entity.ClientSentEmailsEntity;
-import com.storlead.mail.pojo.entity.EmailsEntity;
-import com.storlead.mail.enums.SendStatus;
-import com.storlead.mail.service.ClientSentEmailsService;
-import com.storlead.mail.service.EmailsService;
-import com.storlead.mail.service.SmtpPopSettingsService;
-import lombok.extern.log4j.Log4j2;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import javax.annotation.Resource;
-import javax.mail.*;
-import javax.mail.event.TransportEvent;
-import javax.mail.event.TransportListener;
-import java.lang.reflect.Method;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.util.*;
-import java.util.concurrent.CompletableFuture;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-08-28 10:01
- */
-@Log4j2
-@Component
-public class EmailSenderWithThreadLocal {
-    @Resource
-    private EmailsService emailsService;
-    @Resource
-    private ClientSentEmailsService sentEmailsService;
-    @Resource
-    private SmtpPopSettingsService popSettingsService;
-
-
-
-    public void asynSendMailMessage(Transport transport, Message message, EmailsEntity email) {
-        try {
-            transport.addTransportListener(new TransportListener() {
-                @Override
-                public void messageDelivered(TransportEvent e) {
-                    onEmailSentSuccess(email);
-                }
-
-                @Override
-                public void messageNotDelivered(TransportEvent e) {
-                    onEmailSentFailure(email);
-                }
-
-                @Override
-                public void messagePartiallyDelivered(TransportEvent e) {
-                    onEmailSentPartialSuccess(email);
-                }
-            });
-            transport.connect();
-            transport.sendMessage(message, message.getAllRecipients());
-            transport.close();
-        }catch (Exception e) {
-            log.error("error-------------",e);
-            e.printStackTrace();
-        }
-    }
-
-    public CompletableFuture<SendStatus> sendMailMessage(Transport transport, Message message, EmailsEntity email) {
-        CompletableFuture<SendStatus> future = new CompletableFuture<SendStatus>();
-
-        TransportListener listener = new TransportListener() {
-            @Override
-            public void messageDelivered(TransportEvent e) {
-                onEmailSentSuccess(email);
-                future.complete(SendStatus.SUCCESS);
-            }
-
-            @Override
-            public void messageNotDelivered(TransportEvent e) {
-                onEmailSentFailure(email);
-                future.complete(SendStatus.FAILED);
-            }
-
-            @Override
-            public void messagePartiallyDelivered(TransportEvent e) {
-                onEmailSentPartialSuccess(email);
-                future.complete(SendStatus.PARTIAL_SUCCESS);
-            }
-        };
-
-        try {
-            transport.addTransportListener(listener); // 注意:应使用addTransportListener而不是addTransportListener(可能原代码有拼写错误)
-            transport.connect();
-            transport.sendMessage(message, message.getAllRecipients());
-            transport.close();
-        } catch (SendFailedException e1) {
-            log.error("邮件发送过程中发生异常", e1);
-            future.complete(SendStatus.SERVER_EXCEPTION_550);
-        } catch (AuthenticationFailedException e) {
-            future.complete(SendStatus.SERVER_LOGIN_FAIL);
-        } catch (MessagingException e) {
-            log.error("邮件发送过程中发生异常", e);
-            future.complete(SendStatus.SERVER_LOGIN_FAIL);
-//            if (e.getMessage().contains("")) {
-//                future.complete(SendStatus.PARTIAL_SUCCESS);
-//            } else if (e.getMessage().contains("")) {
-//                future.complete(SendStatus.PARTIAL_SUCCESS);
-//            } else {
-//            }
-        }
-        return future;
-    }
-
-    private void onEmailSentSuccess(EmailsEntity entity)  {
-        try {
-            try {
-                Object myClassInstance = SpringContextUtils.getBean("customerServiceImpl");
-                Class<?> clazz = myClassInstance.getClass();
-                Set<String> mailAddress = new HashSet<>();
-                if (StrUtil.isNotBlank(entity.getRecipient())) {
-                    List<String> recipientls = Arrays.asList(entity.getRecipient().split(","));
-                    mailAddress.addAll(recipientls);
-                }
-                if (StrUtil.isNotBlank(entity.getRecipientCc())) {
-                    List<String> recipientccls = Arrays.asList(entity.getRecipientCc().split(","));
-                    mailAddress.addAll(recipientccls);
-                }
-                if (!CollectionUtils.isEmpty(mailAddress)) {
-                    LocalDateTime sentDate = (Objects.isNull(entity.getSentDate())) ? LocalDateTime.now() : entity.getSentDate().toInstant()
-                            .atZone(ZoneId.systemDefault()) // 使用系统默认时区
-                            .toLocalDateTime();
-                    Method method = clazz.getMethod("updateFollowUpTimeByEmail",Set.class, LocalDateTime.class);
-                    method.invoke(myClassInstance,mailAddress,sentDate);
-                }
-            } catch (Exception e) {
-                log.error("updateFollowUpTimeByEmail --e",e);
-            }
-
-            emailsService.removeById(entity.getId());
-            // 保存发送日志
-            saveLog(entity);
-        }catch (Exception e1) {
-            log.error("onEmailSentSuccess------------",e1);
-        }
-    }
-
-    private void onEmailSentFailure(EmailsEntity entity) {
-        if (Objects.isNull(emailsService)) {
-            return;
-        }
-        LambdaUpdateWrapper<EmailsEntity> update = new LambdaUpdateWrapper<>();
-        update.set(EmailsEntity::getStatus,Integer.valueOf(2));
-        update.eq(EmailsEntity::getId,entity.getId());
-        emailsService.update(update);
-    }
-
-    private void onEmailSentPartialSuccess(EmailsEntity entity) {
-        try {
-            try {
-                Object myClassInstance = SpringContextUtils.getBean("customerMailBingMarkServiceImpl");
-                Class<?> clazz = myClassInstance.getClass();
-                Set<String> mailAddress = new HashSet<>();
-                if (StrUtil.isNotBlank(entity.getRecipient())) {
-                    List<String> recipientls = Arrays.asList(entity.getRecipient().split(","));
-                    mailAddress.addAll(recipientls);
-                }
-                if (StrUtil.isNotBlank(entity.getRecipientCc())) {
-                    List<String> recipientccls = Arrays.asList(entity.getRecipientCc().split(","));
-                    mailAddress.addAll(recipientccls);
-                }
-                LocalDateTime sentDate = (Objects.isNull(entity.getSentDate())) ? LocalDateTime.now() : entity.getSentDate().toInstant()
-                        .atZone(ZoneId.systemDefault()) // 使用系统默认时区
-                        .toLocalDateTime();
-
-                if (!CollectionUtils.isEmpty(mailAddress)) {
-                    Method method = clazz.getMethod("updateFollowUpTimeByEmail",Set.class, LocalDateTime.class);
-                    method.invoke(myClassInstance,mailAddress,sentDate);
-                }
-            } catch (Exception e) {
-                log.error("updateFollowUpTimeByEmail --e",e);
-            }
-            emailsService.removeById(entity.getId());
-            // 保存客户端的发送日志
-            saveLog(entity);
-        }catch (Exception e1) {
-            log.error("onEmailSentSuccess------------",e1);
-        }
-    }
-
-    private void saveLog(EmailsEntity entity) {
-        try {
-            ClientSentEmailsEntity sentEmailsEntity = new ClientSentEmailsEntity();
-            BeanUtils.copyProperties(entity,sentEmailsEntity);
-            sentEmailsService.save(sentEmailsEntity);
-        }catch (Exception e) {
-            log.error("saveLog-----ClientSentEmails-------",e);
-        }
-    }
-}

+ 0 - 174
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/FileExtractor.java

@@ -1,174 +0,0 @@
-package com.storlead.mail.util;
-
-import lombok.extern.java.Log;
-import lombok.extern.log4j.Log4j2;
-
-import javax.mail.Message;
-import javax.mail.Session;
-import javax.mail.internet.MimeMessage;
-import java.io.*;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.DirectoryStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import java.util.zip.ZipInputStream;
-
-/**
- * @program: storlead-saas-platform
- * @description:
- * @author: chenkq
- * @create: 2026-05-18 11:00
- */
-@Log4j2
-public class FileExtractor {
-    public static List<Message> processZipFile(String zipFilePath) {
-        List<Message> mimeMessages = new ArrayList<>();
-        try {
-            File file = new File(zipFilePath);
-            try (ZipFile zipFile = new ZipFile(file)) {
-                // 遍历压缩包中的每个条目
-                zipFile.stream().forEach(entry -> {
-                    try {
-                        // 使用指定的编码解码文件名
-//                        String entryName = new String(entry.getName().getBytes(StandardCharsets.ISO_8859_1), encoding);
-                        InputStream inputStream = zipFile.getInputStream(entry);
-                        Session session = Session.getDefaultInstance(System.getProperties());
-                        MimeMessage mimeMessage = new MimeMessage(session, inputStream);
-                        mimeMessages.add(mimeMessage);
-
-                        // 处理文件内容
-                    } catch (Exception e) {
-                        log.error("processZipFile --- error",e);
-                    }
-                });
-            }
-        }catch (Exception e) {
-            log.error("processZipFile -- error",e);
-        }
-        return mimeMessages;
-    }
-
-    // 解压 .zip 文件
-    public static void extractZip(Path zipFilePath){
-        try {
-// 创建一个解压的目录
-            Path extractDir = Paths.get("extracted_files");
-            Files.createDirectories(extractDir);
-
-            // 解压 ZIP 文件
-            try (ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath.toFile()))) {
-                ZipEntry entry;
-                while ((entry = zipIn.getNextEntry()) != null) {
-                    // 读取每个文件条目
-                    Path filePath = extractDir.resolve(entry.getName());
-                    // 如果条目是目录,创建目录
-                    if (entry.isDirectory()) {
-                        Files.createDirectories(filePath);
-                    } else {
-                        // 如果是文件,写入内容
-                        try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath.toFile()))) {
-                            byte[] buffer = new byte[1024];
-                            int length;
-                            while ((length = zipIn.read(buffer)) > 0) {
-                                bos.write(buffer, 0, length);
-                            }
-                        }
-                    }
-                    zipIn.closeEntry();
-                }
-            }
-        }catch (Exception e) {
-            log.error("extractZip - error", e);
-        }
-
-    }
-
-//    public static List<Message> processZipInMemory(InputStream zipInputStream)  {
-//        List<Message> mimeMessages = new ArrayList<>();
-//        try {
-//            try (ZipInputStream zipIn = new ZipInputStream(zipInputStream)) {
-//                ZipEntry entry;
-//                while ((entry = zipIn.getNextEntry()) != null) {
-//                    // 如果条目是 .eml 文件,进行处理
-//                    if (entry.getName().endsWith(".eml")) {
-//                        Session session = Session.getDefaultInstance(System.getProperties());
-//                        MimeMessage mimeMessage = new MimeMessage(session, zipIn);
-//                        mimeMessages.add(mimeMessage);
-//                    }
-//                    zipIn.closeEntry();
-//                }
-//            }
-//        }catch (Exception e) {
-//            log.error("processZipInMemory -- error",e);
-//        }
-//        return mimeMessages;
-//    }
-
-    public static List<Message> processZipInMemory(InputStream zipInputStream) {
-        List<Message> mimeMessages = new ArrayList<>();
-        try {
-            processZipRecursively(zipInputStream, mimeMessages);
-        } catch (Exception e) {
-            log.error("Error processing ZIP file recursively", e);
-        }
-        return mimeMessages;
-    }
-
-    private static void processZipRecursively(InputStream inputStream, List<Message> mimeMessages) throws Exception {
-        ZipInputStream zipIn1 = new ZipInputStream(inputStream, StandardCharsets.ISO_8859_1);
-        try (ZipInputStream zipIn = zipIn1) {
-            ZipEntry entry;
-            while ((entry = zipIn.getNextEntry()) != null) {
-                try {
-                    if (entry.getName().endsWith(".eml")) {
-                        // Process EML file
-                        Session session = Session.getDefaultInstance(System.getProperties());
-                        MimeMessage mimeMessage = new MimeMessage(session, zipIn);
-                        mimeMessages.add(mimeMessage);
-                    } else if (entry.getName().toLowerCase().endsWith(".zip")) {
-                        // Recursively process nested ZIP files
-                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                        byte[] buffer = new byte[8192];
-                        int bytesRead;
-                        while ((bytesRead = zipIn.read(buffer)) != -1) {
-                            baos.write(buffer, 0, bytesRead);
-                        }
-
-                        ByteArrayInputStream nestedZipStream = new ByteArrayInputStream(baos.toByteArray());
-                        processZipRecursively(nestedZipStream, mimeMessages);
-                    }
-                } finally {
-                    zipIn.closeEntry();
-                }
-            }
-        }
-    }
-    // 逐条处理解压后的文件
-    public static List<Message> processExtractedFiles(Path extractedDir) {
-        List<Message> mimeMessages = new ArrayList<>();
-        try {
-            try (DirectoryStream<Path> stream = Files.newDirectoryStream(extractedDir)) {
-                for (Path entry : stream) {
-                    // 如果是 .eml 文件,则解析
-                    if (entry.toString().endsWith(".eml")) {
-                        try (InputStream emlInputStream = Files.newInputStream(entry)) {
-                            Session session = Session.getDefaultInstance(System.getProperties());
-                            MimeMessage mimeMessage = new MimeMessage(session, emlInputStream);
-                            mimeMessages.add(mimeMessage);
-                        }
-                    } else {
-                        System.out.println("Skipping non-email file: " + entry.getFileName());
-                    }
-                }
-            }
-        }catch (Exception e) {
-            log.error("processExtractedFiles error");
-        }
-        return mimeMessages;
-    }
-}

+ 0 - 42
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/FileHelper.java

@@ -1,42 +0,0 @@
-package com.storlead.mail.util;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.Objects;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-08-09 18:33
- */
-
-public class FileHelper {
-
-    /**
-     * 获取文件大小
-     *
-     * @author timo
-     * @date 2018/9/3 14:03
-     */
-    public static String formatFileSize(Long size) {
-        if (Objects.isNull(size)) {
-            return "0 B";
-        }
-        if (Long.valueOf(0).equals(size)) {
-            return "0 B";
-        }
-        if (size < 0) {
-            return "0 B";
-        }
-        if (size < 1024) {
-            return size + " B";
-        } else if (size < 1024 * 1024) {
-            return String.format("%.2f KB", size / 1024.0);
-        } else if (size < 1024 * 1024 * 1024) {
-            return String.format("%.2f MB", size / (1024.0 * 1024));
-        } else {
-            return String.format("%.2f GB", size / (1024.0 * 1024 * 1024));
-        }
-    }
-}

+ 0 - 50
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/MailFormatPartUtil.java

@@ -1,50 +0,0 @@
-package com.storlead.mail.util;
-
-import javax.mail.BodyPart;
-import javax.mail.Multipart;
-import javax.mail.Part;
-import java.io.InputStream;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-05-30 18:05
- */
-public class MailFormatPartUtil {
-
-    public static void saveAttachment(BodyPart bodyPart) throws Exception {
-        String fileName = bodyPart.getFileName();
-        int size = bodyPart.getSize();
-        InputStream is = bodyPart.getInputStream();
-//        File file = new File("attachments/" + fileName); // 存储附件的文件夹路径
-//        try (FileOutputStream fos = new FileOutputStream(file)) {
-//            byte[] buffer = new byte[4096];
-//            int bytesRead;
-//            while ((bytesRead = is.read(buffer)) != -1) {
-//                fos.write(buffer, 0, bytesRead);
-//            }
-//        }
-        System.out.println("Saved attachment: " + fileName);
-    }
-
-
-    public static String parseMultipart(Multipart multipart) throws Exception {
-        StringBuilder stringBuilder = new StringBuilder();
-        for (int i = 0; i < multipart.getCount(); i++) {
-            BodyPart bodyPart = multipart.getBodyPart(i);
-            if (bodyPart.isMimeType("text/plain")) {
-                stringBuilder.append(bodyPart.getContent());
-            } else if (bodyPart.isMimeType("text/html")) {
-                stringBuilder.append(bodyPart.getContent());
-            } else if (bodyPart.isMimeType("multipart/alternative")) {
-                parseMultipart((Multipart) bodyPart.getContent());
-            } else if (bodyPart.isMimeType("multipart/*")) {
-                parseMultipart((Multipart) bodyPart.getContent());
-            }else if (Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition())) {
-                saveAttachment(bodyPart);
-            }
-        }
-        return stringBuilder.toString();
-    }
-}

+ 0 - 97
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/ReceiveMailQueueThreadPool.java

@@ -1,97 +0,0 @@
-package com.storlead.mail.util;
-
-import com.storlead.framework.common.thread.ThreadPoolUtil;
-import lombok.extern.log4j.Log4j2;
-
-import java.util.*;
-import java.util.concurrent.ThreadPoolExecutor;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-08-26 16:27
- */
-@Log4j2
-public class ReceiveMailQueueThreadPool {
-
-
-    private static volatile ReceiveMailQueueThreadPool instance;
-
-    // 用于存储每个人的任务队列
-    private final Map<String, Queue<Runnable>> taskMap;
-
-    public Boolean getTaskInProgressByMail(String mailAddress) {
-        return taskInProgress.getOrDefault(mailAddress, false);
-    }
-
-    // 用于存储每个人当前是否有任务在进行中
-    private final Map<String, Boolean> taskInProgress;
-
-    // 线程池,用于执行任务
-    private final ThreadPoolExecutor executorService;
-
-    public ReceiveMailQueueThreadPool() {
-        this.taskMap = new HashMap<>();
-        this.taskInProgress = new HashMap<>();
-        this.executorService = ThreadPoolUtil.getThreadExecutor();
-    }
-
-    // 双重检查锁的单例获取方法
-    public static ReceiveMailQueueThreadPool getInstance() {
-        if (instance == null) {
-            synchronized (ReceiveMailQueueThreadPool.class) {
-                if (instance == null) {
-                    instance = new ReceiveMailQueueThreadPool();
-                }
-            }
-        }
-        return instance;
-    }
-
-    // 添加任务到某个人的队列
-    public synchronized void addTask(String person, Runnable task) {
-        if (Objects.nonNull(taskMap) && Objects.nonNull(taskMap.get(person))) {
-            return; // 该人有任务正在进行中
-        }
-        taskMap.putIfAbsent(person, new LinkedList<>());
-        taskMap.get(person).offer(task);
-        taskInProgress.putIfAbsent(person, false);
-        processNextTask(person);
-    }
-
-    // 处理某个人的下一个任务
-    private synchronized void processNextTask(String person) {
-        if (taskInProgress.getOrDefault(person, false)) {
-            return; // 该人有任务正在进行中
-        }
-
-        Queue<Runnable> queue = taskMap.get(person);
-        if (queue == null || queue.isEmpty()) {
-            log.error("没有任务了--"+person);
-            return; // 无任务可处理
-        }
-
-        Runnable task = queue.poll();
-        taskInProgress.put(person, true);
-        executorService.submit(() -> {
-            try {
-                task.run(); // 执行任务
-            } finally {
-                taskCompleted(person); // 标记任务完成并处理下一个任务
-            }
-        });
-    }
-
-    // 标记任务完成
-    public synchronized void taskCompleted(String person) {
-        taskInProgress.put(person, false);
-        taskMap.remove(person);
-        processNextTask(person);
-    }
-
-    // 关闭线程池
-    public void shutdown() {
-        executorService.shutdown();
-    }
-}

+ 0 - 90
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/util/ZipUtility.java

@@ -1,90 +0,0 @@
-package com.storlead.mail.util;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-07-24 14:55
- */
-import com.storlead.mail.pojo.entity.MailAttachmentEntity;
-import com.storlead.mail.properties.MailFileProperties;
-import lombok.extern.log4j.Log4j2;
-
-import javax.mail.Message;
-import java.io.*;
-import java.util.List;
-import java.util.zip.*;
-
-@Log4j2
-public class ZipUtility {
-
-    public static void zipFiles(List<MailAttachmentEntity> attachments, String outputZipFile, MailFileProperties mailFileProperties) throws IOException {
-        try (FileOutputStream fos = new FileOutputStream(outputZipFile);
-             ZipOutputStream zos = new ZipOutputStream(fos)) {
-
-            for (MailAttachmentEntity attachment : attachments) {
-                String filePath = mailFileProperties.getPath().getPath() + File.separator + attachment.getFilePath();
-                File file = new File(filePath);
-                if (file.exists() && !file.isDirectory()) {
-                    try (FileInputStream fis = new FileInputStream(file)) {
-                        ZipEntry zipEntry = new ZipEntry(attachment.getFileName()+"."+attachment.getFileExt());
-                        zos.putNextEntry(zipEntry);
-
-                        byte[] buffer = new byte[1024];
-                        int length;
-                        while ((length = fis.read(buffer)) > 0) {
-                            zos.write(buffer, 0, length);
-                        }
-                        zos.closeEntry();
-                    }
-                } else {
-                    System.err.println("File not found: " + filePath);
-                }
-            }
-        }
-    }
-
-    public static void zipFiles(File sourceDir, File zipFile) throws IOException {
-        try (FileOutputStream fos = new FileOutputStream(zipFile);
-             ZipOutputStream zipOut = new ZipOutputStream(fos)) {
-            File[] files = sourceDir.listFiles();
-            for (File file : files) {
-                try (FileInputStream fis = new FileInputStream(file)) {
-                    ZipEntry zipEntry = new ZipEntry(file.getName());
-                    zipOut.putNextEntry(zipEntry);
-                    byte[] buffer = new byte[1024];
-                    int length;
-                    while ((length = fis.read(buffer)) >= 0) {
-                        zipOut.write(buffer, 0, length);
-                    }
-                    zipOut.closeEntry();
-                }
-            }
-            System.out.println("ZIP file created: " + zipFile.getAbsolutePath());
-        }
-    }
-
-    // 删除临时目录及其内容
-    public static void deleteDirectory(File directory) {
-        File[] files = directory.listFiles();
-        if (files != null) {
-            for (File file : files) {
-                if (file.isDirectory()) {
-                    deleteDirectory(file);
-                } else {
-                    file.delete();
-                }
-            }
-        }
-        directory.delete();
-    }
-
-    public static void saveEmlFile(Message message, String filename) {
-        try (FileOutputStream fos = new FileOutputStream(filename)) {
-            message.writeTo(fos);  // 将邮件内容写入文件
-            System.out.println("EML file saved as " + filename);
-        } catch (Exception e) {
-            log.error("saveEmlFile--------", e);
-        }
-    }
-}

+ 0 - 35
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/AttachmentMapper.xml

@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.AttachmentMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.AttachmentEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                <result column="sort" property="sort" />
-                    <result column="email_id" property="emailId" />
-                    <result column="file_name" property="fileName" />
-                    <result column="file_url" property="fileUrl" />
-                    <result column="file_size" property="fileSize" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-                sort,
-            id, email_id, file_name, file_url, file_size
-        </sql>
-
-</mapper>

+ 0 - 66
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/ClientSentEmailsMapper.xml

@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.ClientSentEmailsMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.ClientSentEmailsEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="sort" property="sort" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                    <result column="smtp_pop_id" property="smtpPopId" />
-                    <result column="msg_uid" property="msgUid" />
-                    <result column="message_id" property="messageId" />
-                    <result column="subject" property="subject" />
-                    <result column="from" property="from" />
-                    <result column="from_name" property="fromName" />
-                    <result column="recipient" property="recipient" />
-                    <result column="recipient_name" property="recipientName" />
-                    <result column="recipient_cc" property="recipientCc" />
-                    <result column="recipient_cc_name" property="recipientCcName" />
-                    <result column="recipient_bcc" property="recipientBcc" />
-                    <result column="recipient_bcc_name" property="recipientBccName" />
-                    <result column="folder" property="folder" />
-                    <result column="custom_folder_id" property="customFolderId" />
-                    <result column="content" property="content" />
-                    <result column="sent_date" property="sentDate" />
-                    <result column="recipient_date" property="recipientDate" />
-                    <result column="email_size" property="emailSize" />
-                    <result column="remark" property="remark" />
-                    <result column="in_out_mark" property="inOutMark" />
-                    <result column="is_read" property="isRead" />
-                    <result column="is_receipt" property="isReceipt" />
-                    <result column="is_track" property="isTrack" />
-                    <result column="read_remind" property="readRemind" />
-                    <result column="delay_send_time" property="delaySendTime" />
-                    <result column="recipient_read" property="recipientRead" />
-                    <result column="is_only_head" property="isOnlyHead" />
-                    <result column="reply_msg_id" property="replyMsgId" />
-                    <result column="status" property="status" />
-                    <result column="is_star" property="isStar" />
-                    <result column="is_trash" property="isTrash" />
-                    <result column="customer_ids" property="customerIds" />
-                    <result column="liaison_ids" property="liaisonIds" />
-                    <result column="follow_up_id" property="followUpId" />
-                    <result column="follow_up_time" property="followUpTime" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                sort,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-            id, smtp_pop_id, msg_uid, message_id, subject,`from`, from_name, recipient, recipient_name, recipient_cc, recipient_cc_name, recipient_bcc, recipient_bcc_name, folder, custom_folder_id, content, sent_date, recipient_date, email_size, remark, in_out_mark, is_read, is_receipt, is_track, read_remind, delay_send_time, recipient_read, is_only_head, reply_msg_id, status, is_star, is_trash, customer_ids, liaison_ids, follow_up_id, follow_up_time
-        </sql>
-
-</mapper>

+ 0 - 32
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailBlacklistRecordMapper.xml

@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.EmailBlacklistRecordMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.EmailBlacklistRecordEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="sort" property="sort" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                    <result column="email_address" property="emailAddress" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                sort,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-            id, email_address
-        </sql>
-
-</mapper>

+ 0 - 33
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailFileFolderMapper.xml

@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.EmailFileFolderMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.EmailFileFolderEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="sort" property="sort" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                    <result column="folder_code" property="folderCode" />
-                    <result column="folder_name" property="folderName" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                sort,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-            id, folder_code, folder_name
-        </sql>
-
-</mapper>

+ 0 - 34
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailFolderRuleMapper.xml

@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.EmailFolderRuleMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.EmailFolderRuleEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="sort" property="sort" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                <result column="folder_rule_code" property="folderRuleCode" />
-                <result column="folder_id" property="folderId" />
-                <result column="compare_content" property="compareContent" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                sort,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-            id, folder_rule_code, folder_id, compare_content
-        </sql>
-
-</mapper>

+ 0 - 33
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailFoldersMapper.xml

@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.EmailFoldersMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.EmailFoldersEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                <result column="sort" property="sort" />
-                    <result column="email_id" property="emailId" />
-                    <result column="folder_id" property="folderId" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-                sort,
-            id, email_id, folder_id
-        </sql>
-
-</mapper>

+ 0 - 26
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailSignatureMapper.xml

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.EmailSignatureMapper">
-
-    <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.EmailSignatureEntity">
-        <id column="id" property="id"/>
-        <result column="signature_title" property="signatureTitle"/>
-        <result column="signature_content" property="signatureContent"/>
-        <result column="is_default" property="isDefault"/>
-        <result column="smtp_pop_id" property="smtpPopId"/>
-        <result column="owner_by" property="ownerBy"/>
-        <result column="create_by" property="createBy"/>
-        <result column="update_by" property="updateBy"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="is_delete" property="isDelete"/>
-        <result column="enabled" property="enabled"/>
-        <result column="sort" property="sort"/>
-    </resultMap>
-
-    <sql id="Base_Column_List">
-        id, signature_title, signature_content, is_default, smtp_pop_id,
-        owner_by, create_by, update_by, create_time, update_time, is_delete, enabled, sort
-    </sql>
-
-</mapper>

+ 0 - 35
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailTemplatesMapper.xml

@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.EmailTemplatesMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.EmailTemplatesEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="template_type" property="templateType" />
-                <result column="sort" property="sort" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                    <result column="template_title" property="templateTitle" />
-                    <result column="template_content" property="templateContent" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                template_type,
-                update_time,
-                sort,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-            id, template_title, template_content
-        </sql>
-
-</mapper>

+ 0 - 33
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/FoldersMapper.xml

@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.FoldersMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.FoldersEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                <result column="sort" property="sort" />
-                    <result column="user_id" property="userId" />
-                    <result column="folder_name" property="folderName" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-                sort,
-            id, user_id, folder_name
-        </sql>
-
-</mapper>

+ 0 - 35
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/MailDelayPullRecordMapper.xml

@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.MailDelayPullRecordMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.MailDelayPullRecordEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                    <result column="smtp_pop_id" property="smtpPopId" />
-                    <result column="msg_uid" property="msgUid" />
-                    <result column="msg_num" property="msgNum" />
-                    <result column="subject" property="subject" />
-                    <result column="folder" property="folder" />
-                    <result column="status" property="status" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-            id, smtp_pop_id, msg_uid, msg_num, subject, folder, status
-        </sql>
-
-</mapper>

+ 0 - 34
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/MailServerPortConfigMapper.xml

@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.MailServerPortConfigMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.MailServerPortConfigEntity" extends="com.storlead.framework.mybatis.mapper.SysBaseFieldMapper.BaseResultMap">
-            <id column="id" property="id" />
-            <result column="mail_server_suffix" property="mailServerSuffix" />
-            <result column="pop_port_ssl" property="popPortSsl" />
-            <result column="pop_port" property="popPort" />
-            <result column="smtp_port_ssl" property="smtpPortSsl" />
-            <result column="smtp_port_tls" property="smtpPortTls" />
-            <result column="smtp_port" property="smtpPort" />
-            <result column="imap_port_ssl" property="imapPortSsl" />
-            <result column="imap_port" property="imapPort" />
-            <result column="pop_server" property="popServer" />
-            <result column="imap_server" property="imapServer" />
-            <result column="smtp_server" property="smtpServer" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-                sort,
-            id, mail_server_suffix, pop_port_ssl, pop_port,smtp_port_tls, smtp_port_ssl, smtp_port, imap_port_ssl, imap_port, pop_server, imap_server, smtp_server
-        </sql>
-
-</mapper>

+ 0 - 37
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/MailTempAttachmentMapper.xml

@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.MailTempAttachmentMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.MailTempAttachmentEntity">
-                    <id column="id" property="id" />
-                <result column="create_by" property="createBy" />
-                <result column="create_time" property="createTime" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="update_by" property="updateBy" />
-                <result column="enabled" property="enabled" />
-                <result column="sort" property="sort" />
-                <result column="update_time" property="updateTime" />
-                <result column="is_delete" property="isDelete" />
-                    <result column="email_id" property="emailId" />
-                    <result column="file_code" property="fileCode" />
-                    <result column="file_name" property="fileName" />
-                    <result column="file_path" property="filePath" />
-                    <result column="file_size" property="fileSize" />
-                    <result column="file_ext" property="fileExt" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                create_by,
-                create_time,
-                owner_by,
-                update_by,
-                enabled,
-                sort,
-                update_time,
-                is_delete,
-            id, email_id, file_code, file_name, file_path, file_size, file_ext
-        </sql>
-
-</mapper>

+ 0 - 33
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/MailboxAutoReplySetMapper.xml

@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.MailboxAutoReplySetMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.MailboxAutoReplySetEntity">
-                    <id column="id" property="id" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="update_by" property="updateBy" />
-                <result column="sort" property="sort" />
-                    <result column="smtp_pop_id" property="smtpPopId" />
-                    <result column="reply_content" property="replyContent" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                create_time,
-                update_time,
-                is_delete,
-                enabled,
-                create_by,
-                owner_by,
-                update_by,
-                sort,
-            id, smtp_pop_id, reply_content
-        </sql>
-
-</mapper>

+ 30 - 0
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/MktMailMessageMapper.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.storlead.sales.mail.mkt.mapper.MktMailMessageMapper">
+
+    <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity">
+        <id column="id" property="id"/>
+        <result column="account_id" property="accountId"/>
+        <result column="org_id" property="orgId"/>
+        <result column="biz_ref" property="bizRef"/>
+        <result column="biz_batch_no" property="bizBatchNo"/>
+        <result column="message_id" property="messageId"/>
+        <result column="track_token" property="trackToken"/>
+        <result column="subject" property="subject"/>
+        <result column="from_addr" property="fromAddr"/>
+        <result column="from_name" property="fromName"/>
+        <result column="recipient" property="recipient"/>
+        <result column="recipient_cc" property="recipientCc"/>
+        <result column="recipient_bcc" property="recipientBcc"/>
+        <result column="content" property="content"/>
+        <result column="status" property="status"/>
+        <result column="fail_reason" property="failReason"/>
+        <result column="is_track" property="isTrack"/>
+        <result column="opened" property="opened"/>
+        <result column="first_open_time" property="firstOpenTime"/>
+        <result column="open_count" property="openCount"/>
+        <result column="sent_time" property="sentTime"/>
+        <result column="delay_send_time" property="delaySendTime"/>
+    </resultMap>
+
+</mapper>

+ 0 - 37
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/SmtpPopSettingsMapper.xml

@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.SmtpPopSettingsMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.SmtpPopSettingsEntity" extends="com.storlead.framework.mybatis.mapper.SysBaseFieldMapper.BaseResultMap">
-            <id column="id" property="id" />
-            <result column="smtp_server" property="smtpServer" />
-            <result column="smtp_port" property="smtpPort" />
-            <result column="protocol_type" property="protocolType" />
-            <result column="email_address" property="emailAddress" />
-            <result column="email_password" property="emailPassword" />
-            <result column="use_default" property="useDefault" />
-            <result column="smtp_ssl" property="smtpSsl" />
-            <result column="smtp_tls" property="smtpTls" />
-            <result column="receive_ssl" property="receiveSsl" />
-            <result column="receive_port" property="receivePort" />
-            <result column="receive_server" property="receiveServer" />
-            <result column="sender_nick_name" property="senderNickName" />
-            <result column="pull_day" property="pullDay" />
-            <result column="reserve_day" property="reserveDay" />
-            <result column="reply_content" property="replyContent" />
-            <result column="reply_title" property="replyTitle" />
-            <result column="is_auto_reply" property="isAutoReply" />
-            <result column="reply_on_time" property="replyOnTime" />
-            <result column="is_delete_mail" property="isDeleteMail" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-            id,protocol_type,receive_server,receive_port,smtp_port,smtp_server,smtp_email_address,
-            smtp_email_password, use_mode, use_default,smtp_ssl,smtp_tls, receive_ssl, sender_nick_name,
-            pull_day,reserve_day,reply_title,reply_content,is_auto_reply,reply_on_time,is_delete_mail
-            <include refid="com.storlead.framework.mybatis.mapper.SysBaseFieldMapper.Base_Column_List"></include>
-        </sql>
-
-</mapper>

+ 0 - 32
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/UserEmailFolderMapper.xml

@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.UserEmailFolderMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.UserEmailFolderEntity">
-                <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="sort" property="sort" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                <result column="folder_name" property="folderName" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                sort,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-            id, folder_name
-        </sql>
-
-</mapper>

+ 0 - 34
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/UserMailTrackRecordMapper.xml

@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.mail.mapper.UserMailTrackRecordMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.UserMailTrackRecordEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="sort" property="sort" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                    <result column="smtp_pop_id" property="smtpPopId" />
-                    <result column="max_mail_id" property="maxMailId" />
-                    <result column="message_id" property="messageId" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                sort,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-            id, smtp_pop_id, max_mail_id, message_id
-        </sql>
-
-</mapper>

+ 0 - 52
java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/AttachmentEntity.java

@@ -1,52 +0,0 @@
-package com.storlead.mail.pojo.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.storlead.framework.mybatis.entity.SysBaseField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * <p>
- * 附件表
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
-@TableName("attachments")
-@ApiModel(value="AttachmentEntity对象", description="附件表")
-public class AttachmentEntity extends SysBaseField{
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键id")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "绑定的邮件")
-    @TableField("email_id")
-    private Long emailId;
-
-    @ApiModelProperty(value = "number")
-    @TableField("file_name")
-    private String fileName;
-
-    @ApiModelProperty(value = "number")
-    @TableField("file_url")
-    private String fileUrl;
-
-    @ApiModelProperty(value = "文件大小")
-    @TableField("file_size")
-    private Integer fileSize;
-
-
-}

+ 0 - 175
java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/ClientSentEmailsEntity.java

@@ -1,175 +0,0 @@
-package com.storlead.mail.pojo.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.storlead.framework.mybatis.entity.SysBaseField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * <p>
- * 邮件表
- * </p>
- *
- * @author chenkq
- * @since 2024-12-04
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
-@TableName("client_sent_emails")
-@ApiModel(value="ClientSentEmailsEntity对象", description="邮件表")
-public class ClientSentEmailsEntity extends SysBaseField {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键id")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "绑定的邮件")
-    @TableField("smtp_pop_id")
-    private Long smtpPopId;
-
-    @ApiModelProperty(value = "msg_uid")
-    @TableField("msg_uid")
-    private String msgUid;
-
-    @ApiModelProperty(value = "消息唯一标识符")
-    @TableField("message_id")
-    private String messageId;
-
-    @ApiModelProperty(value = "主题")
-    @TableField("subject")
-    private String subject;
-
-    @ApiModelProperty(value = "发件人邮箱")
-    @TableField("`from`")
-    private String from;
-
-    @ApiModelProperty(value = "发件人邮箱")
-    @TableField("from_name")
-    private String fromName;
-
-    @ApiModelProperty(value = "收件人邮箱")
-    @TableField("recipient")
-    private String recipient;
-
-    @ApiModelProperty(value = "收件人邮箱")
-    @TableField("recipient_name")
-    private String recipientName;
-
-    @ApiModelProperty(value = "抄送人邮箱")
-    @TableField("recipient_cc")
-    private String recipientCc;
-
-    @ApiModelProperty(value = "抄送人邮箱")
-    @TableField("recipient_cc_name")
-    private String recipientCcName;
-
-    @ApiModelProperty(value = "密送人邮箱")
-    @TableField("recipient_bcc")
-    private String recipientBcc;
-
-    @ApiModelProperty(value = "密送人")
-    @TableField("recipient_bcc_name")
-    private String recipientBccName;
-
-    @ApiModelProperty(value = "folder")
-    @TableField("folder")
-    private String folder;
-
-    @ApiModelProperty(value = "自定义文件夹id")
-    @TableField("custom_folder_id")
-    private Long customFolderId;
-
-    @ApiModelProperty(value = "邮件内容")
-    @TableField("content")
-    private String content;
-
-    @ApiModelProperty(value = "收件时间")
-    @TableField("sent_date")
-    private LocalDateTime sentDate;
-
-    @ApiModelProperty(value = "发件时间")
-    @TableField("recipient_date")
-    private LocalDateTime recipientDate;
-
-    @ApiModelProperty(value = "邮件大小")
-    @TableField("email_size")
-    private Integer emailSize;
-
-    @ApiModelProperty(value = "备注")
-    @TableField("remark")
-    private String remark;
-
-    @ApiModelProperty(value = "进出标记(1进2出)")
-    @TableField("in_out_mark")
-    private Integer inOutMark;
-
-    @ApiModelProperty(value = "是否删除:0未读,1已读")
-    @TableField("is_read")
-    private Integer isRead;
-
-    @ApiModelProperty(value = "是否需要回执,默认0:不需要,1 需要")
-    @TableField("is_receipt")
-    private Integer isReceipt;
-
-    @ApiModelProperty(value = "是否需要跟踪,默认0:不需要,1 需要")
-    @TableField("is_track")
-    private Integer isTrack;
-
-    @ApiModelProperty(value = "是否需要跟踪,默认0:不需要,1 需要")
-    @TableField("read_remind")
-    private Integer readRemind;
-
-    @ApiModelProperty(value = "定时发送时间")
-    @TableField("delay_send_time")
-    private LocalDateTime delaySendTime;
-
-    @ApiModelProperty(value = "收件人阅读状态,默认0:未看,1 已看")
-    @TableField("recipient_read")
-    private Integer recipientRead;
-
-    @ApiModelProperty(value = "是不是只获取了邮件的头信息:1 是,0:否")
-    @TableField("is_only_head")
-    private Integer isOnlyHead;
-
-    @ApiModelProperty(value = "是否回复")
-    @TableField("reply_msg_id")
-    private Integer replyMsgId;
-
-    @ApiModelProperty(value = "状态:0 :失败,1:成功")
-    @TableField("status")
-    private Integer status;
-
-    @ApiModelProperty(value = "状态:0 :no,1:starr")
-    @TableField("is_star")
-    private Long isStar;
-
-    @ApiModelProperty(value = "状态:0 :不是,1:是")
-    @TableField("is_trash")
-    private Long isTrash;
-
-    @TableField("customer_ids")
-    private String customerIds;
-
-    @TableField("liaison_ids")
-    private String liaisonIds;
-
-    @ApiModelProperty(value = "跟进主键id(0表示已跟进,null表示未跟进)")
-    @TableField("follow_up_id")
-    private Long followUpId;
-
-    @ApiModelProperty(value = "跟进时间")
-    @TableField("follow_up_time")
-    private LocalDateTime followUpTime;
-
-
-}

+ 0 - 44
java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/FoldersEntity.java

@@ -1,44 +0,0 @@
-package com.storlead.mail.pojo.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.storlead.framework.mybatis.entity.SysBaseField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * <p>
- * 文件夹名称
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
-@TableName("folders")
-@ApiModel(value="FoldersEntity对象", description="文件夹名称")
-public class FoldersEntity extends SysBaseField {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键id")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "绑定的邮件")
-    @TableField("user_id")
-    private Long userId;
-
-    @ApiModelProperty(value = "文件夹名称")
-    @TableField("folder_name")
-    private String folderName;
-
-
-}

+ 0 - 60
java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/MailDelayPullRecordEntity.java

@@ -1,60 +0,0 @@
-package com.storlead.mail.pojo.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.storlead.framework.mybatis.entity.SysBaseField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * <p>
- * 邮件等待处理记录
- * </p>
- *
- * @author chenkq
- * @since 2024-08-24
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
-@TableName("mail_delay_pull_record")
-@ApiModel(value="MailDelayPullRecordEntity对象", description="邮件等待处理记录")
-public class MailDelayPullRecordEntity extends SysBaseField {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键id")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "绑定的邮件")
-    @TableField("smtp_pop_id")
-    private Long smtpPopId;
-
-    @ApiModelProperty(value = "msg_uid")
-    @TableField("msg_uid")
-    private String msgUid;
-
-    @ApiModelProperty(value = "显示顺序")
-    @TableField("msg_num")
-    private Integer msgNum;
-
-    @ApiModelProperty(value = "主题")
-    @TableField("subject")
-    private String subject;
-
-    @ApiModelProperty(value = "folder")
-    @TableField("folder")
-    private String folder;
-
-    @ApiModelProperty(value = "状态:0 :失败,1:成功")
-    @TableField("status")
-    private Integer status;
-
-
-}

+ 0 - 81
java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/MailServerPortConfigEntity.java

@@ -1,81 +0,0 @@
-package com.storlead.mail.pojo.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.storlead.framework.mybatis.entity.SysBaseField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * <p>
- * 邮箱端口配置
- * </p>
- *
- * @author chenkq
- * @since 2024-08-08
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
-@TableName("mail_server_port_config")
-@ApiModel(value="MailServerPortConfigEntity对象", description="邮箱端口配置")
-public class MailServerPortConfigEntity extends SysBaseField {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "id")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "@qq.com")
-    @TableField("mail_server_suffix")
-    private String mailServerSuffix;
-
-
-
-    @ApiModelProperty(value = "imap件服务器")
-    @TableField("smtp_server")
-    private String smtpServer;
-
-    @ApiModelProperty(value = "smtp服务器端口")
-    @TableField("smtp_port_ssl")
-    private String smtpPortSsl;
-
-    @ApiModelProperty(value = "smtp服务器端口")
-    @TableField("smtp_port")
-    private String smtpPort;
-
-    @ApiModelProperty(value = "smtp Tls服务器端口")
-    @TableField("smtp_port_tls")
-    private String smtpPortTls;
-
-    @ApiModelProperty(value = "imap件服务器")
-    @TableField("pop_server")
-    private String popServer;
-
-    @ApiModelProperty(value = "pop服务器端口")
-    @TableField("pop_port_ssl")
-    private String popPortSsl;
-
-    @ApiModelProperty(value = "pop服务器端口")
-    @TableField("pop_port")
-    private String popPort;
-
-    @ApiModelProperty(value = "imap件服务器")
-    @TableField("imap_server")
-    private String imapServer;
-
-    @ApiModelProperty(value = "imap件服务器")
-    @TableField("imap_port_ssl")
-    private String imapPortSsl;
-
-    @ApiModelProperty(value = "imap件服务器")
-    @TableField("imap_port")
-    private String imapPort;
-
-}

+ 0 - 63
java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/MailTempAttachmentEntity.java

@@ -1,63 +0,0 @@
-package com.storlead.mail.pojo.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.storlead.framework.mybatis.entity.SysBaseField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * <p>
- * 临时邮件附件表
- * </p>
- *
- * @author chenkq
- * @since 2024-08-09
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
-@TableName("mail_temp_attachment")
-@ApiModel(value="MailTempAttachmentEntity对象", description="临时邮件附件表")
-public class MailTempAttachmentEntity extends SysBaseField {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键id")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "邮件id")
-    @TableField("email_id")
-    private Long emailId;
-
-    @ApiModelProperty(value = "保留多少天的数据")
-    @TableField("file_code")
-    private String fileCode;
-
-    @ApiModelProperty(value = "资源名称")
-    @TableField("file_name")
-    private String fileName;
-
-    @ApiModelProperty(value = "资源URL")
-    @TableField("file_path")
-    private String filePath;
-
-    @ApiModelProperty(value = "资源名称")
-    @TableField("file_size")
-    private Long fileSize;
-
-    @ApiModelProperty(value = "资源格式")
-    @TableField("file_ext")
-    private String fileExt;
-
-    @ApiModelProperty(value = "文件大小+单位")
-    @TableField(exist = false)
-    private String fileSizeName;
-
-}

+ 145 - 0
java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/MktMailMessageEntity.java

@@ -0,0 +1,145 @@
+package com.storlead.mail.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.storlead.framework.mybatis.entity.SysBaseField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 营销邮件投递记录(与 CRM emails 分表)。
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("mkt_mail_message")
+@ApiModel(value = "MktMailMessageEntity", description = "营销邮件投递记录")
+public class MktMailMessageEntity extends SysBaseField {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("发信账户ID")
+    @TableField("account_id")
+    private Long accountId;
+
+    @ApiModelProperty("组织ID")
+    @TableField("org_id")
+    private Long orgId;
+
+    @ApiModelProperty("调用方业务单号")
+    @TableField("biz_ref")
+    private String bizRef;
+
+    @ApiModelProperty("批量批次号")
+    @TableField("biz_batch_no")
+    private String bizBatchNo;
+
+    @TableField("message_id")
+    private String messageId;
+
+    @TableField("track_token")
+    private String trackToken;
+
+    @TableField("subject")
+    private String subject;
+
+    @TableField("from_addr")
+    private String fromAddr;
+
+    @TableField("from_name")
+    private String fromName;
+
+    @TableField("recipient")
+    private String recipient;
+
+    @TableField("recipient_cc")
+    private String recipientCc;
+
+    @TableField("recipient_bcc")
+    private String recipientBcc;
+
+    @TableField("content")
+    private String content;
+
+    @ApiModelProperty("文件夹:INBOX/SENT/SENTING/DRAFT")
+    @TableField("folder")
+    private String folder;
+
+    @ApiModelProperty("服务器邮件UID")
+    @TableField("msg_uid")
+    private String msgUid;
+
+    @ApiModelProperty("收信时间")
+    @TableField("recipient_date")
+    private Date recipientDate;
+
+    @ApiModelProperty("邮件头发送时间")
+    @TableField("sent_date")
+    private Date sentDate;
+
+    @ApiModelProperty("是否仅拉头:1是 0已有正文")
+    @TableField("is_only_head")
+    private Integer isOnlyHead;
+
+    @ApiModelProperty("是否已读")
+    @TableField("is_read")
+    private Integer isRead;
+
+    @ApiModelProperty("进出标记:1收件 2发件")
+    @TableField("in_out_mark")
+    private Integer inOutMark;
+
+    @TableField("email_size")
+    private Long emailSize;
+
+    @ApiModelProperty("In-Reply-To 头")
+    @TableField("in_reply_to")
+    private String inReplyTo;
+
+    @ApiModelProperty("回复的原邮件ID")
+    @TableField("reply_msg_id")
+    private Long replyMsgId;
+
+    @ApiModelProperty("发送状态:-2草稿 -1待定时 0发送中 1成功 2失败;收信记录一般为1")
+    @TableField("status")
+    private Integer status;
+
+    @TableField("fail_reason")
+    private String failReason;
+
+    @TableField("is_track")
+    private Integer isTrack;
+
+    @TableField("opened")
+    private Integer opened;
+
+    @TableField("first_open_time")
+    private Date firstOpenTime;
+
+    @TableField("open_count")
+    private Integer openCount;
+
+    @TableField("sent_time")
+    private Date sentTime;
+
+    @TableField("delay_send_time")
+    private Date delaySendTime;
+
+    /**
+     * 详情附件:草稿/延时/失败为临时附件;发送成功为 mkt_mail_attachment。
+     */
+    @ApiModelProperty("附件列表(非表字段)")
+    @TableField(exist = false)
+    private List<?> attachments;
+}

+ 0 - 48
java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/UserMailTrackRecordEntity.java

@@ -1,48 +0,0 @@
-package com.storlead.mail.pojo.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.storlead.framework.mybatis.entity.SysBaseField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * <p>
- * 当前收取邮件的最新邮件记录
- * </p>
- *
- * @author chenkq
- * @since 2024-11-19
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
-@TableName("user_mail_track_record")
-@ApiModel(value="UserMailTrackRecordEntity对象", description="当前收取邮件的最新邮件记录")
-public class UserMailTrackRecordEntity extends SysBaseField {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键id")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "绑定的邮件")
-    @TableField("smtp_pop_id")
-    private Long smtpPopId;
-
-    @ApiModelProperty(value = "当前最新的邮件")
-    @TableField("max_mail_id")
-    private Long maxMailId;
-
-    @ApiModelProperty(value = "邮件msgId")
-    @TableField("message_id")
-    private String messageId;
-
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/AttachmentService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.AttachmentEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 附件表 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-public interface AttachmentService extends MyBaseService<AttachmentEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/ClientSentEmailsService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.ClientSentEmailsEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 邮件表 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-12-04
- */
-public interface ClientSentEmailsService extends MyBaseService<ClientSentEmailsEntity> {
-
-}

+ 0 - 19
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailBlacklistRecordService.java

@@ -1,19 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.EmailBlacklistRecordEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-import java.util.Set;
-
-/**
- * <p>
- * 邮箱黑名单 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-10-31
- */
-public interface EmailBlacklistRecordService extends MyBaseService<EmailBlacklistRecordEntity> {
-
-    Set<String> getBlackEmaillist(Long userId);
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailFileFolderService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.EmailFileFolderEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 文件夹 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-11-04
- */
-public interface EmailFileFolderService extends MyBaseService<EmailFileFolderEntity> {
-
-}

+ 0 - 22
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailFolderRuleService.java

@@ -1,22 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.EmailFolderRuleEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-import com.storlead.mail.pojo.entity.EmailsEntity;
-
-import java.util.List;
-
-/**
- * <p>
- * 用户邮件文件夹出入规则 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-11-12
- */
-public interface EmailFolderRuleService extends MyBaseService<EmailFolderRuleEntity> {
-
-    List<EmailFolderRuleEntity> getUserFolderRules(Long userId);
-
-    void carveUpMailCustomFolder(EmailsEntity emails,List<EmailFolderRuleEntity> rolderRules);
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailFoldersService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.EmailFoldersEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 邮件文件夹关系表 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-public interface EmailFoldersService extends MyBaseService<EmailFoldersEntity> {
-
-}

+ 0 - 15
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailSignatureService.java

@@ -1,15 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.framework.mybatis.service.MyBaseService;
-import com.storlead.mail.pojo.entity.EmailSignatureEntity;
-
-/**
- * 邮件签名服务
- */
-public interface EmailSignatureService extends MyBaseService<EmailSignatureEntity> {
-
-    /**
-     * 保存签名;若设为默认,则取消当前用户(同 smtpPopId)下其他默认。
-     */
-    void saveSignature(EmailSignatureEntity entity);
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailTemplatesService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.EmailTemplatesEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 邮件模板 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-10-28
- */
-public interface EmailTemplatesService extends MyBaseService<EmailTemplatesEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/FoldersService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.FoldersEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 文件夹名称 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-public interface FoldersService extends MyBaseService<FoldersEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MailDelayPullRecordService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.MailDelayPullRecordEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 邮件等待处理记录 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-08-24
- */
-public interface MailDelayPullRecordService extends MyBaseService<MailDelayPullRecordEntity> {
-
-}

+ 0 - 24
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MailFunctionService.java

@@ -1,24 +0,0 @@
-package com.storlead.mail.service;
-
-public interface MailFunctionService {
-    /**
-     * 收邮件
-     */
-     void receiving();
-
-    /**
-     * 发送邮件
-     */
-    void send();
-
-    /**
-     * 删除邮件
-     */
-    void delete();
-
-    /**
-     * 草稿箱
-     */
-    void draft();
-    // 星标邮件
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MailServerPortConfigService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.MailServerPortConfigEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 邮箱端口配置 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-08-08
- */
-public interface MailServerPortConfigService extends MyBaseService<MailServerPortConfigEntity> {
-
-}

+ 0 - 27
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MailTempAttachmentService.java

@@ -1,27 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.MailTempAttachmentEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
-
-/**
- * <p>
- * 临时邮件附件表 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-08-09
- */
-public interface MailTempAttachmentService extends MyBaseService<MailTempAttachmentEntity> {
-
-    MailTempAttachmentEntity saveAttachmentToDatabase(File file, String code, Long mailId);
-
-    Long saveTempAttachment(MultipartFile file, String downloadDir, Long mailId);
-
-    MailTempAttachmentEntity saveTempImageAttachment(MultipartFile file, String downloadDir);
-
-//    Long saveAttachmentToDatabase(File file, String code, Long mailId);
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MailboxAutoReplySetService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.MailboxAutoReplySetEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 邮箱自动回复内容 服务类
- * </p>
- *
- * @author chenkq
- * @since 2025-02-24
- */
-public interface MailboxAutoReplySetService extends MyBaseService<MailboxAutoReplySetEntity> {
-
-}

+ 12 - 0
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/MktMailMessageService.java

@@ -0,0 +1,12 @@
+package com.storlead.mail.service;
+
+import com.storlead.framework.mybatis.service.MyBaseService;
+import com.storlead.mail.pojo.entity.MktMailMessageEntity;
+
+/**
+ * 营销邮件投递业务(对齐 CRM:草稿、附件、延时、发送)。
+ */
+public interface MktMailMessageService extends MyBaseService<MktMailMessageEntity> {
+
+
+}

+ 0 - 28
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/SmtpPopSettingsService.java

@@ -1,28 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.SmtpPopSettingsEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * <p>
- * 邮箱smtp_setting 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-05-28
- */
-public interface SmtpPopSettingsService extends MyBaseService<SmtpPopSettingsEntity> {
-
-    SmtpPopSettingsEntity getDefaultSmtpPop(Long userId);
-
-    SmtpPopSettingsEntity getSystemSmtpPop(Long popId);
-
-    List<SmtpPopSettingsEntity> getDefaultSmtpPopls(Set<Long> userIds);
-
-    List<SmtpPopSettingsEntity> getEmailAccount(Long userId);
-
-    SmtpPopSettingsEntity getEmailByAccountPopId(Long userId,Long popId);
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/UserEmailFolderService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.UserEmailFolderEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 用户文件夹 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-11-12
- */
-public interface UserEmailFolderService extends MyBaseService<UserEmailFolderEntity> {
-
-}

+ 0 - 16
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/UserMailTrackRecordService.java

@@ -1,16 +0,0 @@
-package com.storlead.mail.service;
-
-import com.storlead.mail.pojo.entity.UserMailTrackRecordEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 当前收取邮件的最新邮件记录 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-11-19
- */
-public interface UserMailTrackRecordService extends MyBaseService<UserMailTrackRecordEntity> {
-
-}

+ 18 - 27
java/storlead-message/storlead-message-biz/src/main/java/com/storlead/message/service/impl/MessageTemplateEventDetailServiceImpl.java

@@ -15,10 +15,7 @@ import com.storlead.message.service.InsideMessageRecordService;
 import com.storlead.message.service.MessageTemplateEventDetailService;
 import com.storlead.message.service.UserMessageNoticeConfigService;
 import com.storlead.message.service.WechatMessageService;
-import com.storlead.mail.pojo.entity.SmtpPopSettingsEntity;
 import com.storlead.mail.pojo.SendMailDTO;
-import com.storlead.mail.service.EmailsService;
-import com.storlead.mail.service.SmtpPopSettingsService;
 import com.storlead.user.pojo.entity.DeptEntity;
 import com.storlead.user.pojo.entity.UserEntity;
 import com.storlead.user.service.IDepartService;
@@ -51,12 +48,6 @@ public class MessageTemplateEventDetailServiceImpl extends MyBaseServiceImpl<Mes
     @Resource
     private InsideMessageRecordService insideMessageRecordService;
 
-    @Resource
-    private SmtpPopSettingsService smtpPopSettingsService;
-
-    @Resource
-    private EmailsService emailsService;
-
     @Resource
     private WechatMessageService  wechatMessageService;
 
@@ -184,17 +175,17 @@ public class MessageTemplateEventDetailServiceImpl extends MyBaseServiceImpl<Mes
                         if (CollectionUtils.isEmpty(toUserIds)) {
                             continue;
                         }
-                        SmtpPopSettingsEntity sendSmtpPops = smtpPopSettingsService.getSystemSmtpPop(1L);
-                        if (Objects.isNull(sendSmtpPops)) {
-                            continue;
-                        }
-                        List<SmtpPopSettingsEntity> receiverSmtpPops = smtpPopSettingsService.getDefaultSmtpPopls(receiverUserIds);
-                        if (CollectionUtils.isEmpty(receiverSmtpPops)) {
-                            continue;
-                        }
-                        AccessKeyEncryptor accessKeyEncryptor = AccessKeyEncryptor.getAccessKeyEncryptor("");
-                        String pass = accessKeyEncryptor.decrypt(sendSmtpPops.getEmailPassword());
-                        sendSmtpPops.setEmailPassword(pass);
+//                        SmtpPopSettingsEntity sendSmtpPops = smtpPopSettingsService.getSystemSmtpPop(1L);
+//                        if (Objects.isNull(sendSmtpPops)) {
+//                            continue;
+//                        }
+//                        List<SmtpPopSettingsEntity> receiverSmtpPops = smtpPopSettingsService.getDefaultSmtpPopls(receiverUserIds);
+//                        if (CollectionUtils.isEmpty(receiverSmtpPops)) {
+//                            continue;
+//                        }
+//                        AccessKeyEncryptor accessKeyEncryptor = AccessKeyEncryptor.getAccessKeyEncryptor("");
+//                        String pass = accessKeyEncryptor.decrypt(sendSmtpPops.getEmailPassword());
+//                        sendSmtpPops.setEmailPassword(pass);
 
                         MessageTemplateEventDetailEntity templateEntity = eventDetail;
                         String title = templateEntity.getMessageTitle();
@@ -223,13 +214,13 @@ public class MessageTemplateEventDetailServiceImpl extends MyBaseServiceImpl<Mes
                                 router = router.replace("${jump}$","");
                             }
                         }
-                        List<String> recipientls = receiverSmtpPops.stream().map(SmtpPopSettingsEntity::getEmailAddress).collect(Collectors.toList());
-                        SendMailDTO dto = new SendMailDTO();
-                        dto.setSubject(title);
-                        String routers = "</p><p><a href='"+router+"'>查看</a></p>";
-                        dto.setContent(content+""+routers);
-                        dto.setRecipientls(recipientls);
-                        emailsService.sendEmail(dto,sendSmtpPops);
+//                        List<String> recipientls = receiverSmtpPops.stream().map(SmtpPopSettingsEntity::getEmailAddress).collect(Collectors.toList());
+//                        SendMailDTO dto = new SendMailDTO();
+//                        dto.setSubject(title);
+//                        String routers = "</p><p><a href='"+router+"'>查看</a></p>";
+//                        dto.setContent(content+""+routers);
+//                        dto.setRecipientls(recipientls);
+//                        emailsService.sendEmail(dto,sendSmtpPops);
                     }
                 }
             }

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff