До сих пор мы работали в наших предыдущих главах в основном с папкой 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: