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-сервера показаны в главе « Управление квотами» .