Учебники

JavaMail API — IMAP-серверы

IMAP — сокращение от Internet Access Access Protocol . Это интернет-протокол прикладного уровня, который позволяет почтовому клиенту получать доступ к электронной почте на удаленном почтовом сервере. IMAP-сервер обычно прослушивает общеизвестный порт 143. IMAP через SSL (IMAPS) назначается порту 993.

IMAP поддерживает как онлайн, так и автономный режимы работы. Почтовые клиенты, использующие IMAP, обычно оставляют сообщения на сервере, пока пользователь явно не удалит их.

Пакет com.sun.mail.imap является поставщиком протокола IMAP для API JavaMail, который предоставляет доступ к хранилищу сообщений IMAP. В таблице ниже перечислены интерфейс и классы этого провайдера:

Класс / Интерфейс Описание
IMAPFolder.ProtocolCommand Это простой интерфейс для пользовательских команд протокола IMAP.
ACL Это класс. Запись списка контроля доступа для определенного идентификатора аутентификации (пользователя или группы).
IMAPFolder Этот класс реализует папку IMAP.
IMAPFolder.FetchProfileItem Этот класс для получения заголовков.
IMAPMessage Этот класс реализует объект ReadableMime.
IMAPMessage.FetchProfileCondition Этот класс реализует тест для каждого сообщения в папке.
IMAPSSLStore Этот класс обеспечивает доступ к хранилищу сообщений IMAP через SSL.
IMAPStore Этот класс обеспечивает доступ к хранилищу сообщений IMAP.
права Этот класс представляет набор прав для идентификатора аутентификации (например, пользователя или группы).
Rights.Right Этот внутренний класс представляет индивидуальное право.
SortTerm Определенные критерии сортировки, определенные в RFC 5256.

Некоторые моменты, которые следует отметить выше этого поставщика:

  • Этот поставщик поддерживает протоколы IMAP4 и IMAP4rev1.

  • Подключенное IMAPStore поддерживает пул объектов протокола IMAP для использования при обмене данными с сервером IMAP. Когда папки открываются и необходимы новые объекты протокола IMAP, IMAPStore предоставит их из пула соединений или создаст их, если их нет. Когда папка закрыта, ее объект протокола IMAP возвращается в пул соединений, если этот пул.

  • Подключенный объект IMAPStore может поддерживать или не поддерживать отдельный объект протокола IMAP, который предоставляет хранилище выделенное соединение с сервером IMAP.

Этот поставщик поддерживает протоколы IMAP4 и IMAP4rev1.

Подключенное IMAPStore поддерживает пул объектов протокола IMAP для использования при обмене данными с сервером IMAP. Когда папки открываются и необходимы новые объекты протокола IMAP, IMAPStore предоставит их из пула соединений или создаст их, если их нет. Когда папка закрыта, ее объект протокола IMAP возвращается в пул соединений, если этот пул.

Подключенный объект IMAPStore может поддерживать или не поддерживать отдельный объект протокола IMAP, который предоставляет хранилище выделенное соединение с сервером IMAP.

Поставщик протокола IMAP поддерживает следующие свойства, которые могут быть установлены в объекте сеанса JavaMail. Свойства всегда задаются как строки; столбец Тип описывает, как строка интерпретируется.

название Тип Описание
mail.imap.user строка Имя пользователя по умолчанию для IMAP.
mail.imap.host строка IMAP-сервер для подключения.
mail.imap.port ИНТ Порт сервера IMAP для подключения, если метод connect () явно не указывает его. По умолчанию 143.
mail.imap.partialfetch логический Управляет использованием возможности частичной выборки IMAP. По умолчанию true.
mail.imap.fetchsize ИНТ Частичный размер выборки в байтах. По умолчанию 16K.
mail.imap.ignorebodystructuresize логический Ответ IMAP BODYSTRUCTURE включает в себя точный размер каждой части тела. Обычно этот размер используется для определения того, сколько данных нужно извлечь для каждой части тела. По умолчанию false.
mail.imap.connectiontimeout ИНТ Значение времени ожидания для сокета в миллисекундах. По умолчанию это бесконечный тайм-аут.
mail.imap.timeout ИНТ Тайм-аут сокета ввода-вывода в миллисекундах. По умолчанию это бесконечный тайм-аут.
mail.imap.statuscachetimeout ИНТ Значение времени ожидания в миллисекундах для кэша ответа команды STATUS. По умолчанию 1000 (1 секунда). Ноль отключает кеш.
mail.imap.appendbuffersize ИНТ Максимальный размер сообщения для буферизации в памяти при добавлении в папку IMAP.
mail.imap.connectionpoolsize ИНТ Максимальное количество доступных соединений в пуле соединений. По умолчанию 1.
mail.imap.connectionpooltimeout ИНТ Значение времени ожидания в миллисекундах для соединений пула соединений. По умолчанию 45000 (45 секунд).
mail.imap.separatestoreconnection логический Флаг, указывающий, использовать ли выделенное хранилище для команд хранилища. По умолчанию установлено значение false.
mail.imap.auth.login.disable логический Если значение равно true, предотвращает использование нестандартной команды AUTHENTICATE LOGIN вместо использования простой команды LOGIN. По умолчанию установлено значение false.
mail.imap.auth.plain.disable логический Если true, запрещает использование команды AUTHENTICATE PLAIN. По умолчанию установлено значение false.
mail.imap.auth.ntlm.disable логический Если true, запрещает использование команды AUTHENTICATE NTLM. По умолчанию установлено значение false.
mail.imap.proxyauth.user строка Если сервер поддерживает расширение PROXYAUTH, в этом свойстве указывается имя пользователя, который будет действовать. Выполните аутентификацию на сервере, используя учетные данные администратора. После проверки подлинности поставщик IMAP выдаст команду PROXYAUTH с именем пользователя, указанным в этом свойстве.
mail.imap.localaddress строка Локальный адрес (имя хоста) для привязки при создании сокета IMAP. По умолчанию используется адрес, выбранный классом Socket.
mail.imap.localport ИНТ Номер локального порта для привязки при создании сокета IMAP. По умолчанию используется номер порта, выбранный классом Socket.
mail.imap.sasl.enable логический Если установлено значение true, попытайтесь использовать пакет javax.security.sasl, чтобы выбрать механизм аутентификации для входа в систему. По умолчанию false.
mail.imap.sasl.mechanisms строка Разделенный пробелами или запятыми список имен механизмов SASL, которые нужно использовать.
mail.imap.sasl.authorizationid строка Идентификатор авторизации для использования в аутентификации SASL. Если не установлено, используется идентификатор аутентификации (имя пользователя).
mail.imap.sasl.realm строка Область для использования с механизмами аутентификации SASL, которые требуют области, такой как DIGEST-MD5.
mail.imap.auth.ntlm.domain строка Домен аутентификации NTLM.
mail.imap.auth.ntlm.flags ИНТ Флаги, специфичные для протокола NTLM.
mail.imap.socketFactory Сокет Фабрика Если установлен класс, который реализует интерфейс javax.net.SocketFactory, этот класс будет использоваться для создания сокетов IMAP.
mail.imap.socketFactory.class строка Если установлено, указывает имя класса, который реализует интерфейс javax.net.SocketFactory. Этот класс будет использоваться для создания сокетов IMAP.
mail.imap.socketFactory.fallback логический Если задано значение true, сбой при создании сокета с использованием указанного класса фабрики сокетов приведет к созданию сокета с использованием класса java.net.Socket. По умолчанию true.
mail.imap.socketFactory.port ИНТ Определяет порт для подключения при использовании указанной фабрики сокетов. Порт по умолчанию используется, когда не установлен.
mail.imap.ssl.enable логический Если установлено значение true, используйте SSL для подключения и используйте порт SSL по умолчанию. По умолчанию установлено значение false для протокола «imap» и значение true для протокола «imap».
mail.imap.ssl.checkserveridentity логический Если установлено значение true, проверьте идентичность сервера, как указано в RFC 2595. По умолчанию установлено значение false.
mail.imap.ssl.trust строка Если установлено, и фабрика сокетов не была указана, разрешает использование MailSSLSocketFactory.
Если установлено «*», все хосты являются доверенными.
Если задан список хостов, разделенных пробелами, эти хосты являются доверенными.
В противном случае доверие зависит от сертификата, который предоставляет сервер.
mail.imap.ssl.socketFactory SSL Socket Factory Если установлен класс, который расширяет класс javax.net.ssl.SSLSocketFactory, этот класс будет использоваться для создания сокетов IMAP SSL.
mail.imap.ssl.socketFactory.class строка Если установлено, указывает имя класса, который расширяет класс javax.net.ssl.SSLSocketFactory. Этот класс будет использоваться для создания сокетов IMAP SSL.
mail.imap.ssl.socketFactory.port ИНТ Определяет порт для подключения при использовании указанной фабрики сокетов. Если не установлен, будет использоваться порт по умолчанию.
mail.imap.ssl.protocols строка Определяет протоколы SSL, которые будут включены для соединений SSL. Значение свойства представляет собой разделенный пробелами список токенов, приемлемых для метода javax.net.ssl.SSLSocket.setEnabledProtocols.
mail.imap.starttls.enable логический При значении true разрешает использовать команду STARTTLS (если она поддерживается сервером) для переключения соединения на соединение, защищенное TLS, перед выполнением каких-либо команд входа в систему. По умолчанию установлено значение false.
mail.imap.starttls.required логический Если истина, требует использования команды STARTTLS. Если сервер не поддерживает команду STARTTLS или команда не выполнена, метод подключения завершится ошибкой. По умолчанию false.
mail.imap.socks.host строка Задает имя хоста прокси-сервера SOCKS5, который будет использоваться для соединений с почтовым сервером.
mail.imap.socks.port строка Задает номер порта для прокси-сервера SOCKS5. Это следует использовать только в том случае, если прокси-сервер не использует стандартный номер порта 1080.
mail.imap.minidletime ИНТ Это свойство устанавливает задержку в миллисекундах. Если не установлено, по умолчанию используется 10 миллисекунд.
mail.imap.enableimapevents логический Включите специальные события, специфичные для IMAP, для доставки в ConnectionListener магазина. Если это правда, незапрошенные ответы, полученные во время бездействующего метода Магазина, будут отправлены как ConnectionEvents с типом IMAPStore.RESPONSE. Сообщение о событии будет необработанной строкой ответа IMAP. По умолчанию эти события не отправляются.
mail.imap.folder.class строка Имя класса подкласса com.sun.mail.imap.IMAPFolder. Подкласс может использоваться для обеспечения поддержки дополнительных команд IMAP. У подкласса должны быть открытые конструкторы вида public MyIMAPFolder (String fullName, разделитель символов, хранилище IMAPStore, логическое isNamespace) и общедоступный MyIMAPFolder (ListInfo li, IMAPStore store)

В общем случае приложения не должны использовать классы в этом пакете напрямую. Вместо этого они должны использовать API, определенные пакетом javax.mail (и подпакетами). Приложения никогда не должны создавать экземпляры IMAPStore или IMAPFolder напрямую. Вместо этого им следует использовать метод Session getStore, чтобы получить соответствующий объект Store, и из этого получить объекты Folder.

Примеры использования IMAP-сервера приведены в главе « Управление квотами» .