Eu dei uma procurada por aqui mas não vi algo que se encaixava comigo.
Eu cheguei a pegar os emails, mas ele me puxa todos, são mais de 800. Alguém sabe como receber e ler apenas o último email (o mais recente) usando o JavaMail?
Consegui Resolver: O Guilherme Nascimento do Stack ajudou: https://pt.stackoverflow.com/questions/313175/ler-email-mais-recente-javamail
public void lerEmail() {
try {
campolog.setContentType("text/html");
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.starttls.enable", "true");
Session emailSession = Session.getDefaultInstance(props);
Store store = emailSession.getStore("imaps");
store.connect("pop.gmail.com", "email@gmail.com", "senha");
// javax.mail.Folder[] folders = store.getDefaultFolder().list("*");
// for (javax.mail.Folder folder : folders) {
// if ((folder.getType() & javax.mail.Folder.HOLDS_MESSAGES) != 0) {
// System.out.println(folder.getFullName() + ": " + folder.getMessageCount());
// }
// }
SortTerm[] termos = new SortTerm[1];
termos[0] = SortTerm.ARRIVAL;
Folder pastaEmail = store.getFolder("SMS");
pastaEmail.open(Folder.READ_ONLY);
Message[] mensagens = pastaEmail.getMessages();
//System.out.println("Total de E-mails: " + mensagens.length);
if (mensagens.length > 0) {
final int ultimaMensagem = mensagens.length - 1;
campolog.setText("Mensagem: " + mensagens[ultimaMensagem].getContent().toString());
} else {
System.out.println("Não há E-mails.");
}
pastaEmail.close(false);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}