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
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());
}
});