JavaMail API - Zarządzanie folderami
Do tej pory pracowaliśmy w poprzednich rozdziałach głównie z folderem INBOX. Jest to domyślny folder, w którym znajduje się większość poczty. Niektóre systemy mogą nazywać to jako INBOX, a inne mogą nazywać to inną nazwą. Ale zawsze możesz uzyskać do niego dostęp z JavaMail API, używając nazwy INBOX.
Interfejs API JavaMail reprezentuje foldery jako instancje abstrakcyjnej klasy Folder:
public abstract class Folder extends Object
Ta klasa deklaruje metody żądania nazwanych folderów z serwerów, usuwania wiadomości z folderów, wyszukiwania określonych wiadomości w folderach, wyświetlania wiadomości w folderze i tak dalej.
Otwieranie folderu
Nie możemy utworzyć folderu bezpośrednio, ponieważ jedyny konstruktor w klasie Folder jest chroniony . Folder możemy pobrać z:
Sesja
Sklep
lub inny folder
Wszystkie powyższe klasy mają podobną metodę getFolder () z podobną sygnaturą:
public abstract Folder getFolder(String name) throws MessagingException
Oto niektóre metody, które pomagają w uzyskaniu obiektu Folder :
metoda | Opis |
---|---|
boolean istnieje () | Sprawdza, czy folder naprawdę istnieje. Użyj tej metody przed pobraniem obiektu Folder. |
abstract void open (tryb int) | Kiedy otrzymasz folder , jest zamknięty. Użyj tej metody, aby go otworzyć. trybem może być Folder.READ_ONLY lub Folder.READ_WRITE. |
abstrakcyjny boolean isOpen () | Ta metoda zwraca wartość true, jeśli folder jest otwarty, false, jeśli jest zamknięty |
abstrakcyjne void close (boolean expunge) | Zamyka folder. Jeśli argument niszczenia ma wartość true , wszelkie usunięte wiadomości w folderze są usuwane z rzeczywistego pliku na serwerze. W przeciwnym razie są po prostu oznaczane jako usunięte , ale nadal można cofnąć usunięcie wiadomości. |
Podstawowe informacje o folderze
Poniżej przedstawiono niektóre metody w klasie Folder, które zwracają podstawowe informacje o folderze:
metoda | Opis |
---|---|
abstrakcyjny ciąg getName () | Zwraca nazwę folderu, na przykład „TutorialsPoint Mail” |
abstrakcyjny ciąg getFullName () | Zwraca pełną hierarchiczną nazwę z katalogu głównego, na przykład „books / Manisha / TutorialsPoint Mail”. |
URLName getURLName () | Zwróć URLName reprezentujący ten folder. |
abstrakcyjny folder getParent () | Zwraca nazwę folderu zawierającego ten folder, tj. Folder nadrzędny. Np. „Manisha” z poprzedniego przykładu „TutorialsPoint Mail”. |
streszczenie int getType () | Zwraca liczbę int wskazującą, czy folder może zawierać wiadomości i / lub inne foldery. |
int getMode () | Zwraca jedną z dwóch nazwanych stałych Folder.READ_ONLY lub Folder.READ_WRITE lub -1, gdy tryb jest nieznany. |
Sklep getStore () | Zwraca obiekt Store, z którego pobrano ten folder. |
abstrakcyjny znak getSeparator () | Zwróć znak separatora, który oddziela ścieżkę tego folderu od nazw bezpośrednich podfolderów. |
Zarządzanie folderem
Oto niektóre metody, które pomagają w zarządzaniu folderem:
metoda | Opis |
---|---|
abstrakcyjne tworzenie boolowskie (typ int) | Spowoduje to utworzenie nowego folderu w sklepie tego folderu. Gdzie typ byłby: Folder.HOLDS_MESSAGES lub Folder.HOLDS_FOLDERS. Zwraca wartość true, jeśli folder został pomyślnie utworzony, w przeciwnym razie zwraca wartość false . |
abstrakcyjne boolowskie usuwanie (boolean recurse) | Spowoduje to usunięcie folderu tylko wtedy, gdy folder jest zamknięty. W przeciwnym razie zgłasza wyjątek IllegalStateException . Jeśli recurse ma wartość true , podfoldery są usuwane. |
abstrakcyjne boolean renameTo (folder f) | Spowoduje to zmianę nazwy tego folderu. Aby zmienić nazwę folderu, należy go zamknąć. W przeciwnym razie zostanie zgłoszony wyjątek IllegalStateException. |
Zarządzanie wiadomościami w folderach
Oto niektóre metody, które pomagają w zarządzaniu wiadomościami w folderze:
metoda | Opis |
---|---|
abstract void appendMessages (wiadomości Message []) | Jak sama nazwa wskazuje, wiadomości w tablicy są umieszczane na końcu tego folderu. |
void copyMessages (wiadomości Message [], folder docelowy) | Powoduje to skopiowanie wiadomości z tego folderu do określonego folderu podanego jako argument. |
streszczenie Wiadomość [] expunge () | Aby usunąć wiadomość z folderu, ustaw jej flagę Flags.Flag.DELETED na wartość true. Aby fizycznie usunąć usunięte wiadomości z folderu, musisz wywołać tę metodę. |
Lista zawartości folderu
Istnieją cztery metody wyświetlania listy folderów, które zawiera folder:
metoda | Opis |
---|---|
Lista folderów [] () | Zwraca tablicę z listą folderów, które zawiera ten folder. |
Lista folderów [] Subscribe () | Zwraca tablicę z listą wszystkich subskrybowanych folderów, które zawiera ten folder. |
abstrakcyjna lista folderów [] (wzorzec ciągów) | Jest to podobne do metody list () , z tą różnicą, że umożliwia określenie wzorca. Wzorzec jest łańcuchem podającym nazwy folderów, które pasują. |
Lista folderów [] subskrybowanych (wzór ciągu) | Jest to podobne do metody listSubscribe () , z tym wyjątkiem, że umożliwia określenie wzorca. Wzorzec jest łańcuchem podającym nazwy folderów, które pasują. |
Sprawdzanie poczty
metoda | Opis |
---|---|
streszczenie int getMessageCount () | Tę metodę można wywołać w otwartym lub zamkniętym folderze. Jednak w przypadku folderu zamkniętego ta metoda może (ale nie musi) zwracać -1, aby wskazać, że dokładna liczba wiadomości nie jest łatwo dostępna. |
abstract boolean hasNewMessages () | Zwraca to wartość true, jeśli nowe wiadomości zostały dodane do folderu od czasu jego ostatniego otwarcia. |
int getNewMessageCount () | Zwraca liczbę nowych wiadomości, sprawdzając wiadomości w folderze, dla którego ustawiono flagę RECENT. |
int getUnreadMessageCount () | Można to wywołać w otwartym lub zamkniętym folderze. Jednak w przypadku zamkniętego folderu może zwrócić -1, aby wskazać, że uzyskanie prawdziwej odpowiedzi byłoby zbyt kosztowne. |
Pobieranie wiadomości z folderów
Klasa Folder udostępnia cztery metody pobierania wiadomości z otwartych folderów:
metoda | Opis |
---|---|
streszczenie Wiadomość getMessage (int messageNumber) | Zwraca n-tą wiadomość w folderze. Pierwsza wiadomość w folderze ma numer 1. |
Wiadomość [] getMessages () | Zwraca tablicę obiektów Message reprezentujących wszystkie wiadomości w tym folderze. |
Wiadomość [] getMessages (int start, int end) | Zwraca tablicę obiektów Message z folderu, zaczynając od początku i kończąc na końcu włącznie. |
Wiadomość [] getMessages (int [] messageNumbers) | Zwraca tablicę zawierającą tylko te komunikaty, które są wyraźnie określone przez numer w tablicy messageNumbers . |
void fetch (wiadomości Message [], FetchProfile fp) | Pobierz wstępnie elementy określone w FetchProfile dla danych Messages. Argument FetchProfile określa, które nagłówki wiadomości mają zostać pobrane z wyprzedzeniem. |
Wyszukiwanie folderów
Jeśli serwer obsługuje wyszukiwanie (jak wiele serwerów IMAP i większość serwerów POP nie), łatwo jest przeszukać folder pod kątem wiadomości spełniających określone kryteria. Kryteria są kodowane w obiektach SearchTerm. Poniżej przedstawiono dwie metody wyszukiwania:
metoda | Opis |
---|---|
Wyszukiwanie wiadomości [] (hasło SearchTerm) | Przeszukaj ten folder pod kątem wiadomości pasujących do określonego kryterium wyszukiwania. Zwraca tablicę zawierającą pasujące komunikaty. Zwraca pustą tablicę, jeśli nie znaleziono żadnych dopasowań. |
Wyszukiwanie wiadomości [] (termin SearchTerm, wiadomości Message []) | Przeszukuj podaną tablicę wiadomości pod kątem tych, które pasują do określonego kryterium wyszukiwania. Zwraca tablicę zawierającą pasujące komunikaty. Zwraca pustą tablicę, jeśli nie znaleziono żadnych dopasowań. Określone obiekty Message muszą należeć do tego folderu. |
Flagi
Modyfikacja flag jest przydatna, gdy trzeba zmienić flagi dla całego zestawu wiadomości w folderze. Poniżej przedstawiono metody zawarte w klasie Folder:
metoda | Opis |
---|---|
void setFlags (Message [] wiadomości, flaga flagi, wartość logiczna) | Ustawia określone flagi dla komunikatów określonych w tablicy. |
void setFlags (int start, int end, Flags flag, wartość logiczna) | Ustawia określone flagi dla wiadomości ponumerowanych od początku do końca, włącznie z początkiem i końcem. |
void setFlags (int [] messageNumbers, flaga flagi, wartość logiczna) | Ustawia określone flagi dla wiadomości, których numery wiadomości znajdują się w tablicy. |
abstract Flags getPermanentFlags () | Zwraca flagi obsługiwane przez ten folder dla wszystkich wiadomości. |