JavaMail API - серверы IMAP

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

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

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

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

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

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

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

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

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

имя Тип Описание
mail.imap.user Строка Имя пользователя по умолчанию для IMAP.
mail.imap.host Строка Сервер IMAP, к которому нужно подключиться.
mail.imap.port int Порт сервера IMAP для подключения, если метод connect () не указывает его явно. По умолчанию 143.
mail.imap.partialfetch логический Определяет, следует ли использовать возможность частичной выборки IMAP. По умолчанию true.
mail.imap.fetchsize int Размер частичной выборки в байтах. По умолчанию - 16K.
mail.imap.ignorebodystructuresize логический Ответ IMAP BODYSTRUCTURE включает точный размер каждой части тела. Обычно этот размер используется для определения объема данных, которые нужно извлечь для каждой части тела. По умолчанию - false.
mail.imap.connectiontimeout int Значение тайм-аута подключения к сокету в миллисекундах. По умолчанию - бесконечный тайм-аут.
mail.imap.timeout int Значение тайм-аута ввода-вывода сокета в миллисекундах. По умолчанию - бесконечный тайм-аут.
mail.imap.statuscachetimeout int Значение таймаута в миллисекундах для кеширования ответа на команду STATUS. По умолчанию 1000 (1 секунда). Ноль отключает кеш.
mail.imap.appendbuffersize int Максимальный размер сообщения для буферизации в памяти при добавлении в папку IMAP.
mail.imap.connectionpoolsize int Максимальное количество доступных подключений в пуле подключений. По умолчанию 1.
mail.imap.connectionpooltimeout int Значение тайм-аута в миллисекундах для соединений пула соединений. По умолчанию 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 int Номер локального порта для привязки при создании сокета IMAP. По умолчанию используется номер порта, выбранный классом Socket.
mail.imap.sasl.enable логический Если установлено значение true, попробуйте использовать пакет javax.security.sasl, чтобы выбрать механизм аутентификации для входа в систему. По умолчанию - false.
mail.imap.sasl.mechanisms Строка Список имен механизмов SASL, разделенных пробелами или запятыми, которые можно попробовать использовать.
mail.imap.sasl.authorizationid Строка ID авторизации для использования при аутентификации SASL. Если не установлен, используется идентификатор аутентификации (имя пользователя).
mail.imap.sasl.realm Строка Область для использования с механизмами аутентификации SASL, для которых требуется область, например DIGEST-MD5.
mail.imap.auth.ntlm.domain Строка Домен аутентификации NTLM.
mail.imap.auth.ntlm.flags int Флаги протокола 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 int Задает порт для подключения при использовании указанной фабрики сокетов. Если не задан, используется порт по умолчанию.
mail.imap.ssl.enable логический Если установлено значение true, использовать SSL для подключения и использовать порт SSL по умолчанию. По умолчанию false для протокола «imap» и true для протокола «imaps».
mail.imap.ssl.checkserveridentity логический Если установлено значение true, проверьте идентичность сервера в соответствии с RFC 2595. По умолчанию - false.
mail.imap.ssl.trust Строка Если установлено, а фабрика сокетов не указана, разрешает использование MailSSLSocketFactory.
Если установлено «*», все хосты являются доверенными.
Если задан список хостов, разделенных пробелами, эти хосты являются доверенными.
В противном случае доверие зависит от сертификата, представленного сервером.
mail.imap.ssl.socketFactory Фабрика сокетов SSL Если установлено значение класса, расширяющего класс javax.net.ssl.SSLSocketFactory, этот класс будет использоваться для создания сокетов SSL IMAP.
mail.imap.ssl.socketFactory.class Строка Если установлено, указывает имя класса, расширяющего класс javax.net.ssl.SSLSocketFactory. Этот класс будет использоваться для создания сокетов SSL IMAP.
mail.imap.ssl.socketFactory.port int Задает порт для подключения при использовании указанной фабрики сокетов. Если не установлен, будет использоваться порт по умолчанию.
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 int Это свойство устанавливает задержку в миллисекундах. Если не установлен, значение по умолчанию составляет 10 миллисекунд.
mail.imap.enableimapevents логический Включите доставку специальных событий IMAP в ConnectionListener хранилища. Если установлено значение true, незапрашиваемые ответы, полученные во время метода ожидания Store, будут отправлены как ConnectionEvents с типом IMAPStore.RESPONSE. Сообщение о событии будет необработанной строкой ответа IMAP. По умолчанию эти события не отправляются.
mail.imap.folder.class Строка Имя класса подкласса com.sun.mail.imap.IMAPFolder. Подкласс можно использовать для поддержки дополнительных команд IMAP. Подкласс должен иметь общедоступные конструкторы вида public MyIMAPFolder (String fullName, char separator, IMAPStore store, Boolean isNamespace) и общедоступный MyIMAPFolder (ListInfo li, IMAPStore store)

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

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