From 9454e48babd8670d10f30bcb70bd024eb4fe0617 Mon Sep 17 00:00:00 2001 From: oneao Date: Sat, 5 Jul 2025 17:25:30 +0800 Subject: [PATCH] u --- .../java/com/email/FolderHierarchyTest.java | 88 ++++++++++++++----- notes/后端开发/paddlepaddle/paddlenlp.md | 6 -- 2 files changed, 66 insertions(+), 28 deletions(-) diff --git a/code/email/Email-Springboot/src/main/java/com/email/FolderHierarchyTest.java b/code/email/Email-Springboot/src/main/java/com/email/FolderHierarchyTest.java index eea90db5..ca72c6c0 100644 --- a/code/email/Email-Springboot/src/main/java/com/email/FolderHierarchyTest.java +++ b/code/email/Email-Springboot/src/main/java/com/email/FolderHierarchyTest.java @@ -1,38 +1,82 @@ package com.email; + import javax.mail.*; -import javax.mail.internet.*; -import java.util.Properties; +import javax.mail.internet.MimeBodyPart; +import javax.mail.search.FlagTerm; +import java.io.*; +import java.util.*; +import java.util.concurrent.*; public class FolderHierarchyTest { + private final ExecutorService executor = Executors.newFixedThreadPool(8); - public static void main(String[] args) { - String host = "imap.qq.com"; // IMAP 服务器地址 - String username = "717406575@qq.com"; // 邮箱地址 - String password = "dhqesrwzgblrbcac"; // 邮箱密码 + public static void main(String[] args) throws Exception { + new FolderHierarchyTest().run(); + } + public void run() throws Exception { Properties props = new Properties(); - props.put("mail.store.protocol", "imap"); - props.put("mail.imap.ssl.enable", "true"); // 使用 SSL + props.put("mail.store.protocol", "imaps"); - try { - Session session = Session.getDefaultInstance(props); - Store store = session.getStore("imap"); - store.connect(host, username, password); + Session session = Session.getInstance(props, null); + Store store = session.getStore(); + store.connect("imap.qq.com", "717406575@qq.com", "dhqesrwzgblrbcac"); - Folder defaultFolder = store.getDefaultFolder(); - printFolderHierarchy(defaultFolder, ""); + Folder inbox = store.getFolder("INBOX"); + inbox.open(Folder.READ_ONLY); - store.close(); - } catch (Exception e) { - e.printStackTrace(); + if (!(inbox instanceof UIDFolder)) { + throw new RuntimeException("This IMAP server does not support UIDFolder"); + } + UIDFolder uidFolder = (UIDFolder) inbox; + + Message[] messages = inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false)); + + int batchSize = 50; + for (int i = 0; i < messages.length; i += batchSize) { + int start = i; + int end = Math.min(i + batchSize, messages.length); + executor.submit(() -> processBatch(Arrays.copyOfRange(messages, start, end), uidFolder)); + } + + executor.shutdown(); + executor.awaitTermination(30, TimeUnit.MINUTES); + inbox.close(false); + store.close(); + } + + private void processBatch(Message[] batch, UIDFolder uidFolder) { + for (Message msg : batch) { + try { + long uid = uidFolder.getUID(msg); + String subject = msg.getSubject(); + Address[] froms = msg.getFrom(); + System.out.println("UID: " + uid + " Subject: " + subject); + + Object content = msg.getContent(); + if (content instanceof Multipart) { + Multipart mp = (Multipart) content; + for (int i = 0; i < mp.getCount(); i++) { + BodyPart bp = mp.getBodyPart(i); + if (Part.ATTACHMENT.equalsIgnoreCase(bp.getDisposition())) { + saveAttachment((MimeBodyPart) bp, uid); + } + } + } + } catch (Exception e) { + System.err.println("Failed to process message: " + e.getMessage()); + } } } - private static void printFolderHierarchy(Folder folder, String indent) throws MessagingException { - Folder[] subFolders = folder.list(); - for (Folder f : subFolders) { - System.out.println(f.getFullName()); - } + private void saveAttachment(MimeBodyPart part, long uid) throws Exception { + String fileName = part.getFileName(); + File dir = new File("attachments/" + uid); + if (!dir.exists()) dir.mkdirs(); + + File file = new File(dir, fileName); + part.saveFile(file); + System.out.println("Saved attachment: " + file.getAbsolutePath()); } } diff --git a/notes/后端开发/paddlepaddle/paddlenlp.md b/notes/后端开发/paddlepaddle/paddlenlp.md index 4a3020e2..d3486a31 100644 --- a/notes/后端开发/paddlepaddle/paddlenlp.md +++ b/notes/后端开发/paddlepaddle/paddlenlp.md @@ -3,12 +3,6 @@ - github:https://github.com/PaddlePaddle/PaddleNLP/tree/develop - 官网: - - - - - - # 报错 ## AttributeError: module 'h11' has no attribute 'Event'. Did you mean: '_events'?