Les e mails Java Mail API ne s'affichent pas dans l'ordre inverse


public class testemail {

    Properties properties = null;
    private Session session = null;
    private Store store = null;
    private Folder inbox = null;
    private String userName = "[email protected]";  //
    private String password = "xx";
    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));
                    Message messages[]=inbox.getMessages();
            //      System.out.println("Number of mails = " + messages.length);

                    ArrayUtils.reverse(messages);
                    for ( Message message : messages ) {
                            System.out.println("Subject: "+ message.getSubject());
                            //if(message.getSubject().toString()=="Suppliers that match your search: suto in future mode")
                            //{
                            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("--------------------------------");
                            //}
                            //else
                            //{
                                    //System.out.println("not found");
                            //}
                    }
                    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();
    }}

Sortie :

Objet: Restez plus organisé avec la boîte de réception de Gmail

Date: Ven Aug 14 19:46:39 IST 2015

Objet: Tentative de connexion empêchée

Date: Ven Aug 14 21: 53: 49 IST 2015

Objet: Fournisseurs qui correspondent à votre recherche: Jan 28 US par vani

Date: Sam Aug 15 11:55:33 IST 2015

Objet: Fournisseurs qui correspondent à votre recherche: Search1

Date: Sam Aug 15 11:55:35 IST 2015

Objet: Fournisseurs qui correspondent à votre recherche: 123

Date: Sam Aug 15 11:55:29 IST 2015

Objet: Fournisseurs qui correspondent à votre recherche:

Date: Sam Aug 15 11:55:32 IST 2015

Objet: Fournisseurs qui correspondent à votre recherche: ttt

Date: Sam Aug 15 11:55:30 IST 2015

Objet: Fournisseurs qui correspondent à votre recherche: suto en mode futur

Date: Sam Aug 15 11:55:33 IST 2015

Objet: Fournisseurs qui correspondent votre recherche: Test 13 mar 2012 Automobile

Date: Sam Aug 15 11:55:30 IST 2015

Author: Glorfindel, 2015-08-16

1 answers

, Il semble que Folder#getMessages() ne garantit pas un ordre spécifique des messages. Vous devez donc les trier vous-même:

ArrayUtils.sort(messages, new Comparator<Message>() {
    @Override
    public int compareTo(Message m1, Message m2) {
        return m2.getReceivedDate().compareTo(m1.getReceivedDate());
    }
});
 2
Author: Glorfindel, 2015-08-16 16:37:50