Siergiej jest blisko, ale domyślnie JavaMail's list()
ma LIST "" %
, który daje tylko foldery najwyższego poziomu. GMail umieszcza swoje foldery systemowe (cała poczta, kopie robocze, wysłane wiadomości, spam, oznaczono gwiazdką i kosz) pod niezmiennym folderem [Gmail]
, więc naprawdę musisz zrobić LIST "" *
zamiast tego. W przeciwnym razie odzyskasz tylko , [Gmail]
i swoje etykiety.
Oto niektóre przykładowy kod, który łączy się z GMail, pobiera listę folderów, a drukuje się nazwę i wiadomość licznik dla każdego nie- \NoSelect
folderu (czyli te, które nie są tylko hierarchia zastępcze, jak [Gmail]
):
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getDefaultInstance(props, null);
javax.mail.Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "<username>@gmail.com", "<password>");
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());
}
}
} catch (MessagingException e) {
e.printStackTrace();
}
Dlaczego, na litość boską, zaakceptowałeś odpowiedź, która nie przyniosła rezultatów, których szukałeś? – dkarp