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