From cb6efdef55c77da2bcc8dbd99a74e7e49c5ec067 Mon Sep 17 00:00:00 2001
From: lin <sbla5888@163.com>
Date: Tue, 05 Mar 2024 18:06:34 +0800
Subject: [PATCH] 邮件收件+bug修复+流程优化
---
src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java | 97 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 95 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java b/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java
index 1bf4c3f..bec5ba0 100644
--- a/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java
+++ b/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java
@@ -1,15 +1,19 @@
package org.springblade.modules.email.service.impl;
+import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPStore;
import com.xxl.job.core.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springblade.common.utils.ParseMail;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.modules.email.config.MailProperties;
import org.springblade.modules.email.config.MailSenderConfig;
import org.springblade.modules.email.entity.EmailAccount;
import org.springblade.modules.email.service.IEmailAccountService;
import org.springblade.modules.messageRecord.entity.MessageUser;
+import org.springblade.modules.messageRecord.vo.MessageRecordVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@@ -17,9 +21,18 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import javax.mail.MessagingException;
+import javax.mail.*;
+import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeUtility;
+import javax.mail.search.FlagTerm;
import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@@ -79,6 +92,86 @@
emailAccount.setSubject(title);
emailAccount.setContent(content);
- return senderEmail(emailAccount);
+ return senderEmail(emailAccount);
+ }
+
+
+ @Override
+ public List<MessageRecordVO> getUnreadList() throws MessagingException {
+ Folder folder = null;
+ Store store = senderConfig.getReceive();
+ List<MessageRecordVO> MessageRecordVOList = new ArrayList<>();
+ try {
+ // 获得收件箱
+ folder = store.getFolder("INBOX");
+ // 以读写模式打开收件箱
+ folder.open(Folder.READ_WRITE);
+ //false 表示未读
+ FlagTerm flagTerm = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
+ //获得收件箱的邮件列表
+ Message[] messages = folder.search(flagTerm);
+ // 打印不同状态的邮件数量
+ System.out.println("收件箱中共" + messages.length + "封邮件!");
+ System.out.println("收件箱中共" + folder.getUnreadMessageCount() + "封未读邮件!");
+ System.out.println("收件箱中共" + folder.getNewMessageCount() + "封新邮件!");
+ System.out.println("收件箱中共" + folder.getDeletedMessageCount() + "封已删除邮件!");
+
+ System.out.println("------------------------开始解析邮件----------------------------------");
+// ParseMail.getMailTextContent(messages.)
+ StringBuffer content = new StringBuffer(30);
+
+// for (int i = 0; i < messages.length; i++) {
+// System.out.println("消息:"+messages[i].getSubject());
+// String from = MimeUtility.decodeText(messages[i].getFrom()[0].toString());
+// InternetAddress internetAddress = new InternetAddress(from);
+// System.out.println("发件人:" + internetAddress.getPersonal() + '(' + internetAddress.getAddress() + ')');
+// }
+ for (Message message : messages) {
+
+ ParseMail.getMailTextContent(message, content);
+
+ MessageRecordVO messageRecordVO = new MessageRecordVO();
+ String from = MimeUtility.decodeText(message.getFrom()[0].toString());
+ InternetAddress ia = new InternetAddress(from);
+
+ System.out.println("发件人:" + ia.getPersonal() + '(' + ia.getAddress() + ')');
+ System.out.println("主题:" + message.getSubject());
+ System.out.println("主题fa:" + message.getFlags());
+ if (message.getSentDate() != null) {
+ System.out.println("邮件发送时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(message.getSentDate()));
+ }
+ System.out.println("-------------------------------------------\n");
+// message.setFlag(Flags.Flag.SEEN, true);
+ messageRecordVO.setTitle(message.getSubject());
+ if (message.getSentDate() != null) {
+ messageRecordVO.setStartTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(message.getSentDate()));
+ }
+ messageRecordVO.setUserName(ia.getPersonal() + '(' + ia.getAddress() + ')');
+ messageRecordVO.setContent(String.valueOf(content));
+ MessageRecordVOList.add(messageRecordVO);
+ }
+ return MessageRecordVOList;
+
+ } catch (NoSuchProviderException e) {
+ e.printStackTrace();
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ if (folder != null) {
+ folder.close(false);
+ }
+ if (store != null) {
+ store.close();
+ }
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
}
}
--
Gitblit v1.9.3