До сих пор мы работали в наших предыдущих главах в основном с папкой INBOX. Это папка по умолчанию, в которой находится большая часть почты. Некоторые системы могут называть его как INBOX, а другие могут называть его другим именем. Но вы всегда можете получить к нему доступ через API JavaMail, используя имя INBOX.
JavaMail API представляет папки как экземпляры абстрактного класса Folder:
public abstract class Folder extends Object
Этот класс объявляет методы для запроса именованных папок с серверов, удаления сообщений из папок, поиска определенных сообщений в папках, перечисления сообщений в папке и т. Д.
Открытие папки
Мы не можем создать папку напрямую, так как единственный конструктор в классе Folder защищен . Мы можем получить папку из:
-
сессия
-
магазин
-
или другая папка
сессия
магазин
или другая папка
Все вышеперечисленные классы имеют похожий метод getFolder () с похожей подписью:
public abstract Folder getFolder(String name) throws MessagingException
Некоторые методы, которые помогают в получении объекта Folder :
| метод | Описание |
|---|---|
| логическое существует () | Проверяет, действительно ли папка существует. Используйте этот метод перед получением объекта Folder. |
| аннотация void open (режим int) | Когда вы получаете папку , она закрыта. Используйте этот метод, чтобы открыть его. режим может быть Folder.READ_ONLY или Folder.READ_WRITE. |
| абстрактный логический isOpen () | Этот метод возвращает истину, если папка открыта, ложь, если она закрыта |
| абстрактный void закрыть (логическое выражение) | Закрывает папку. Если аргумент expunge имеет значение true , все удаленные сообщения в папке удаляются из фактического файла на сервере. В противном случае они просто помечаются как удаленные , но сообщения все еще можно восстановить. |
Основная информация о папке
Ниже приведены некоторые методы класса Folder, которые возвращают основную информацию о папке:
| метод | Описание |
|---|---|
| абстрактная строка getName () | Возвращает имя папки, например, «TutorialsPoint Mail» |
| абстрактная строка getFullName () | Возвращает полное иерархическое имя из корня, например «books / Manisha / TutorialsPoint Mail». |
| URLName getURLName () | Вернуть URLName, представляющее эту папку. |
| абстрактный папка getParent () | Возвращает имя папки, которая содержит эту папку, т.е. родительскую папку. Например, «Manisha» из предыдущего примера «TutorialsPoint Mail». |
| abstract int getType () | Возвращает int, указывающий, может ли папка содержать сообщения и / или другие папки. |
| int getMode () | Возвращает одну из двух именованных констант Folder.READ_ONLY или Folder.READ_WRITE или -1, если режим неизвестен. |
| Магазин getStore () | Возвращает объект Store, из которого была извлечена эта папка. |
| абстрактный символ getSeparator () | Вернуть символ разделителя, который отделяет путь к этой папке от имен ближайших подпапок. |
Управление папкой
Ниже приведены некоторые методы, которые помогают управлять папкой:
| метод | Описание |
|---|---|
| абстрактное логическое создание (тип int) | Это создаст новую папку в хранилище этой папки. Где тип будет: Folder.HOLDS_MESSAGES или Folder.HOLDS_FOLDERS. Возвращает true, если папка успешно создана, иначе возвращает false . |
| абстрактный логический удалить (булев рекурс) | Это удаляет папку, только если папка закрыта. В противном случае он создает исключение IllegalStateException . Если значение recurse равно true , подпапки удаляются. |
| абстрактный логическое переименование (папка f) | Это меняет имя этой папки. Папка должна быть закрыта для переименования. В противном случае создается исключение IllegalStateException. |
Управление сообщениями в папках
Ниже приведены некоторые методы, которые помогают управлять сообщениями в папке:
| метод | Описание |
|---|---|
| abstract void appendMessages (Message [] messages) | Как следует из названия, сообщения в массиве размещаются в конце этой папки. |
| void copyMessages (сообщения [] сообщения, назначение папки) | Это копирует сообщения из этой папки в указанную папку, заданную в качестве аргумента. |
| абстрактное сообщение [] expunge () | Чтобы удалить сообщение из папки, установите для его флага Flags.Flag.DELETED значение true. Чтобы физически удалить удаленные сообщения из папки, вы должны вызвать этот метод. |
Перечисление содержимого папки
Существует четыре способа составления списка папок, которые содержит папка:
| метод | Описание |
|---|---|
| Папка [] list () | Это возвращает массив, перечисляющий папки, которые содержит эта папка. |
| Папка [] listSubscribeed () | Это возвращает массив, перечисляющий все подписанные папки, которые содержит эта папка. |
| абстрактный список папок [] (строковый шаблон) | Это похоже на метод list () за исключением того, что он позволяет вам указать шаблон. Шаблон представляет собой строку, в которой указаны имена соответствующих папок. |
| Папка [] listSubscribeed (образец строки) | Это похоже на метод listSubscribeed () за исключением того, что он позволяет вам указать шаблон. Шаблон представляет собой строку, в которой указаны имена соответствующих папок. |
Проверка на почту
| метод | Описание |
|---|---|
| abstract int getMessageCount () | Этот метод может быть вызван в открытой или закрытой папке. Однако в случае закрытой папки этот метод может (или не может) возвращать -1, чтобы указать, что точное количество сообщений не всегда легко доступно. |
| абстрактный логический hasNewMessages () | Возвращает значение true, если новые сообщения были добавлены в папку с момента ее последнего открытия. |
| int getNewMessageCount () | Он возвращает счетчик новых сообщений, проверяя сообщения в папке, для которой установлен флаг RECENT. |
| int getUnreadMessageCount () | Это может быть вызвано в открытой или закрытой папке. Однако в случае закрытой папки он может возвращать -1, чтобы указать, что реальный ответ будет слишком дорогим для получения. |
Получение сообщений из папок
Класс Folder предоставляет четыре метода для получения сообщений из открытых папок:
| метод | Описание |
|---|---|
| абстрактное сообщение getMessage (int messageNumber) | Это возвращает n-е сообщение в папке. Первое сообщение в папке номер 1. |
| Сообщение [] getMessages () | Это возвращает массив объектов Message, представляющих все сообщения в этой папке. |
| Сообщение [] getMessages (int start, int end) | Это возвращает массив объектов Message из папки, начиная с начала и заканчивая концом включительно. |
| Сообщение [] getMessages (int [] messageNumbers) | Это возвращает массив, содержащий только те сообщения, которые конкретно определены по номеру в массиве messageNumbers . |
| void fetch (Message [] messages, FetchProfile fp) | Предварительная выборка элементов, указанных в FetchProfile для данных сообщений. Аргумент FetchProfile указывает, какие заголовки в сообщениях следует предварительно выбирать. |
Поиск папок
Если сервер поддерживает поиск (как это делают многие серверы IMAP, а большинство серверов POP — нет), можно легко найти в папке сообщения, отвечающие определенным критериям. Критерии закодированы в объектах SearchTerm. Ниже приведены два метода поиска:
| метод | Описание |
|---|---|
| Поиск сообщения [] (термин SearchTerm) | Поиск в этой папке сообщений, соответствующих указанному критерию поиска. Возвращает массив, содержащий соответствующие сообщения. Возвращает пустой массив, если совпадений не найдено. |
| Поиск сообщения [] (термин SearchTerm, сообщения Message []) | Поиск в указанном массиве сообщений для тех, которые соответствуют указанному критерию поиска. Возвращает массив, содержащий соответствующие сообщения. Возвращает пустой массив, если совпадений не найдено. Указанные объекты сообщения должны принадлежать этой папке. |
Флаги
Изменение флага полезно, когда вам нужно изменить флаги для всего набора сообщений в папке. Ниже приведены методы, предоставляемые в классе Folder: