gpt4 book ai didi

java - 如何使用 Java Mail API 获取有限数量的消息

转载 作者:行者123 更新时间:2023-11-30 06:16:49 25 4
gpt4 key购买 nike

我正在使用此代码加载收件箱消息。

// connect to my pop3 inbox
Properties properties = System.getProperties();
Session session = Session.getDefaultInstance(properties);
Store store = null;
try {
store = session.getStore("pop3");

store.connect(inboxAccountConfiguration.getServerAddress(), inboxAccountConfiguration.getUserName(), inboxAccountConfiguration.getPassword());
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);

// get the list of inbox messages
Message[] messages = inbox.getMessages();

if (messages.length == 0) System.out.println("No messages found.");

for (int i = 0; i < messages.length; i++) {
// stop after listing ten messages
if (i > 10) {
System.exit(0);
inbox.close(true);
store.close();
}

System.out.println("Message " + (i + 1));
System.out.println("From : " + messages[i].getFrom()[0]);
System.out.println("Subject : " + messages[i].getSubject());
System.out.println("Sent Date : " + messages[i].getSentDate());
System.out.println();
}

inbox.close(true);
store.close();
} catch (Exception e) {
e.printStackTrace();
}

但是我需要限制要加载的消息数量

我已经尝试过类似的事情

Message[] messages = inbox.getMessages(0, (int) configuration.getNumber());

但这不起作用,只是抛出异常

java.lang.ArrayIndexOutOfBoundsException: -1
at com.sun.mail.pop3.POP3Folder.getMessage(POP3Folder.java:364)
at javax.mail.Folder.getMessages(Folder.java:933)
at core.mail.POPMessageRetriever.lambda$getInboxMail$0(POPMessageRetriever.java:33)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

如何仅加载特定数量的收件箱消息?

最佳答案

消息编号从 1 开始,而不是从 0 开始。

getMessages 方法不加载任何消息。它仅创建一个 Message 对象,该对象充当对服务器上消息的引用。仅当 Message 对象上的方法之一需要时才加载消息数据。

关于java - 如何使用 Java Mail API 获取有限数量的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49019767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com