正在检索从最新到最旧的电子邮件 Java 邮件 API

Retrieving emails from Latest to oldest Java Mail API

public class testemail {

Properties properties = null;
private Session session = null;
private Store store = null;
private Folder inbox = null;
private String userName = "xxx@gmail.com";  //
private String password = "xxx";
public testemail() {

}

public void readMails() throws Exception {
    properties = new Properties();
    properties.setProperty("mail.host", "imap.gmail.com");
    properties.setProperty("mail.port", "995");
    properties.setProperty("mail.transport.protocol", "imaps");
    session = Session.getInstance(properties,
            new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(userName, password);
        }
    });
    try {
        store = session.getStore("imaps");
        store.connect();
        inbox = store.getFolder("INBOX");
        inbox.open(Folder.READ_ONLY);
        Message messages[] = inbox.search(new FlagTerm(
                new Flags(Flag.SEEN), false));

        System.out.println("Number of mails = " + messages.length);

        for ( Message message : messages ) {

            Address[] from = message.getFrom();
            System.out.println("-------------------------------");
            System.out.println("Date : " + message.getSentDate());
            System.out.println("From : " + from[0]);
            System.out.println("Subject: " + message.getSubject());
            System.out.println("Content :");

            Object content = message.getContent();
            Multipart multiPart = (Multipart) content;
            procesMultiPart(multiPart);

            System.out.println("--------------------------------");

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


public void procesMultiPart(Multipart content) throws Exception {

    int multiPartCount = content.getCount();
    for (int i = 0; i < multiPartCount; i++) {
        BodyPart bodyPart = content.getBodyPart(i);
        Object o;
        o = bodyPart.getContent();
        if (o instanceof String) {
            System.out.println(o);
        } else if (o instanceof Multipart) {
            procesMultiPart((Multipart) o);
        }
    }
} 

public static void main(String[] args) throws Exception {
    testemail sample = new testemail();
    sample.readMails();
}}

在上面的代码中,我能够在我的控制台上从 gmail 获取从最旧到最新的电子邮件。但是我希望它从最新到最旧循环。有什么办法可以实现这一目标。请帮助:)

我认为 JavaMail API 中没有用于此的参数或方法。你必须自己反转 messages 数组,例如通过包含 Commons.Lang 库:

messages = ArrayUtils.reverse(messages);

或从另一个方向迭代它:

for (int i = messages.length - 1; i >= 0; i--) {
    Message message = messages[i];