Не удается получить электронную почту в папках "Черновики", "Спам" и "Корзина" из Google, используя javax.mail - PullRequest
2 голосов
/ 05 сентября 2011

Я хочу получать письма из всех папок из gmail. Из входящих, отправленных и других папок я получаю электронные письма успешно. Но когда я пытаюсь получить его из Drafts, Spam и Trash, я получаю исключение:

09:51:45,622 ERROR MailRetriever.[main]getNoFlaggedMails:142 - Can't get messages: javax.mail.MessagingException: connection failure
javax.mail.MessagingException: connection failure
at com.sun.mail.imap.IMAPStore.getProtocol(IMAPStore.java:742)
at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:910)
at ua.com.stormlabs.gap.gmail.MailRetriever.getNoFlaggedMails(MailRetriever.java:133)
at ua.com.stormlabs.gap.gmail.GMailServiceProcessor.processFolder(GMailServiceProcessor.java:95)
at ua.com.stormlabs.gap.gmail.GMailServiceProcessor.start(GMailServiceProcessor.java:80)
at ua.com.stormlabs.gap.gmail.GMailGapApp.main(GMailGapApp.java:21)

Это код для получения почты:

Folder folder = imapSslStore.getFolder(folderName);
folder.open(Folder.READ_WRITE);
openedFolders.put(folderName, folder);

Flags searchFlags = new Flags(Flags.Flag.USER);
searchFlags.add(FLAG_PREFIX + READ_BY_GAP_FLAG);
Message[] messages = folder.search(new FlagTerm(searchFlags, false));
log.debug("Messages list retrieved: " + messages.length);
return messages;

Имена папок, которые я пытаюсь открыть безуспешно:

[Gmail]/Drafts
[Gmail]/Spam
[Gmail]/Trash

Ответы [ 4 ]

5 голосов
/ 28 октября 2011

Я обнаружил, что в моей учетной записи Gmail папка для мусора называется «[Google Mail] / Корзина» и т. Д., А не «Gmail] / Корзина».

Я нахожусь в Великобритании, и когда я впервые открыл свою учетную запись Gmail, это был действительно я@googlemail.com, а не я @ gmail.com.

Надеюсь, это поможет.

2 голосов
/ 05 сентября 2011

Самый простой ответ: Draft, Spam и Trash - это не папки, а ярлыки в Google Mail. Я выполняю поиск в Google, чтобы подтвердить свой ответ.


Обновление: после некоторого поиска в Google я обнаружил SO Post , в котором говорится, что папки [Gmail]/* являются папками, которые нельзя выбрать.

0 голосов
/ 11 января 2017

Имя следующей папки:

[Gmail]/Spam

отлично работает для меня. Вот мой код, который я часто использую для чтения папки спама с помощью Javamail:

private void readFolder(int max, boolean deletes, List<Message> result, Store store, String folderName) throws MessagingException, IOException {
    Folder folder = null;
    try {
        folder = store.getFolder(folderName);
        folder.open(Folder.READ_WRITE);
        Message[] messages = folder.getMessages();
        for (int i = 0; i < messages.length && result.size() < max; i++) {
            Message message = messages[i];
            if (deletes && (!message.getFlags().contains(Flag.DELETED))) {
                message.setFlag(Flag.DELETED, true);
            }
            result.add(message);
        }
    } finally {
        if (folder != null) {
            try {
                folder.close(true);
            } catch (Exception e) {
            }
        }
    }
}
0 голосов
/ 26 января 2014
Folder[] f = store.getDefaultFolder().list();
for(Folder fd:f){
    Folder t[]=fd.list();

      System.out.println("-------"+fd.getName()+"------");
    for(Folder f1:t)
        System.out.println("->"+f1.getName());

}
...