2013-08-24 5 views
2

Я пытаюсь получить папку SENT в Gmail. Но это зависит от языка. Ex, если я использовал английский язык список Мое дерево ниже:Я использую javamail IMAP, но я не знаю, как получить Отправленную или другую папку, кроме почтовых ящиков

[Gmail]/All Mail 
[Gmail]/Bin 
[Gmail]/Drafts 
.... 

Но если я использую другой язык, все папки будут переведены на этот язык. Я пытаюсь создать индекс для папки, но это не будет успешным, потому что вся папка будет отсортирована по алфавиту. Я не могу сделать такой код: getFolder("[Gmail]/Sent Mail"), на другом языке «Отправлено письмо будет переведено. У меня вопрос. Я могу получить все имя папки, но как узнать, где находится папка« SENT MAIL », чтобы получить всю почту отправлено.

ответ

4

папки Gmail имеют атрибуты, и вы можете положиться на них, чтобы получить папку, которую вы хотите (если это один из стандартных).

Так что, если вы

store.getDefaultFolder().list("*"); 

вы будет получать все папки, а не только первый уровень. И ответ с сервера должен выглядеть так:

A3 LIST "" "*" 
* LIST (\HasNoChildren) "/" "INBOX" 
* LIST (\Noselect \HasChildren) "/" "[Gmail]" 
* LIST (\HasNoChildren \All) "/" "[Gmail]/All Mail" 
* LIST (\HasNoChildren \Drafts) "/" "[Gmail]/Drafts" 
* LIST (\HasNoChildren \Important) "/" "[Gmail]/Important" 
* LIST (\HasNoChildren \Sent) "/" "[Gmail]/Sent Mail" 
* LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam" 
* LIST (\HasNoChildren \Flagged) "/" "[Gmail]/Starred" 
* LIST (\HasNoChildren \Trash) "/" "[Gmail]/Trash" 
* LIST (\HasNoChildren) "/" "[Gmail]Trash" 

Как только вы получите список папок, вы можете повторить их поиск нужного атрибута. Так что если вы ищете отправленную папку вы можете сделать это:

public Folder getSentFolder(Folder[] folders) throws MessagingException { 
    for (Folder folder : folders) { 
     IMAPFolder imapFolder = (IMAPFolder) folder; 
     for(String attribute : imapFolder.getAttributes()) { 
      if ("\\Sent".equals(attribute)) { 
       return folder; 
      } 
     } 
    } 
    return null; 
} 

И тогда у вас есть селектор папок, которое зависит от конкретного языка.

ПРИМЕЧАНИЕ Это работает, потому что это Gmail. Другие почтовые серверы могут не иметь атрибутов