Как получить ограниченное количество сообщений с помощью Java Mail API

bxfvgekd спросил: 03 февраля 2018 в 10:04 в: java

Я использую этот код для загрузки сообщений в почтовых ящиках.

// 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)

Как загрузить только определенное количество сообщений в почтовых ящиках


0 ответов