Учебники

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

Почтовый протокол (POP) — это стандартный интернет-протокол прикладного уровня, используемый локальными почтовыми клиентами для получения электронной почты с удаленного сервера через соединение TCP / IP. POP поддерживает простые требования загрузки и удаления для доступа к удаленным почтовым ящикам. Сервер POP3 прослушивает известный порт 110.

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

название Описание
POP3Folder Папка POP3 (может быть только «INBOX»).
POP3Message Сообщение POP3.
POP3SSLStore Хранилище сообщений POP3 с использованием SSL.
POP3Store Магазин сообщений POP3.

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

  • Поставщик POP3 поддерживает только одну папку с именем INBOX . Из-за ограничений протокола POP3 многие функции JavaMail API, такие как уведомление о событиях, управление папками, управление флагами и т. Д., Не допускаются.

  • Доступ к поставщику POP3 осуществляется через API JavaMail с помощью имени протокола pop3 или URL-адреса в виде pop3: // user: password @ host: port / INBOX « .

  • POP3 не поддерживает постоянных флагов. Например, флаг Flags.Flag.RECENT никогда не будет установлен для сообщений POP3. Приложение должно определить, какие сообщения в почтовом ящике POP3 являются новыми .

  • POP3 не поддерживает метод Folder.expunge (). Чтобы удалить и удалить сообщения, установите флаг Flags.Flag.DELETED на сообщениях и закройте папку, используя метод Folder.close (true).

  • POP3 не предоставляет полученную дату , поэтому метод getReceivedDate вернет значение null.

  • При обращении к заголовкам сообщения POP3 поставщик POP3 использует команду TOP для извлечения всех заголовков, которые затем кэшируются.

  • Когда осуществляется доступ к содержимому сообщения POP3, поставщик POP3 использует команду RETR для получения всего сообщения.

  • Метод POP3Message.invalidate можно использовать для аннулирования кэшированных данных без закрытия папки.

Поставщик POP3 поддерживает только одну папку с именем INBOX . Из-за ограничений протокола POP3 многие функции JavaMail API, такие как уведомление о событиях, управление папками, управление флагами и т. Д., Не допускаются.

Доступ к поставщику POP3 осуществляется через API JavaMail с помощью имени протокола pop3 или URL-адреса в виде pop3: // user: password @ host: port / INBOX « .

POP3 не поддерживает постоянных флагов. Например, флаг Flags.Flag.RECENT никогда не будет установлен для сообщений POP3. Приложение должно определить, какие сообщения в почтовом ящике POP3 являются новыми .

POP3 не поддерживает метод Folder.expunge (). Чтобы удалить и удалить сообщения, установите флаг Flags.Flag.DELETED на сообщениях и закройте папку, используя метод Folder.close (true).

POP3 не предоставляет полученную дату , поэтому метод getReceivedDate вернет значение null.

При обращении к заголовкам сообщения POP3 поставщик POP3 использует команду TOP для извлечения всех заголовков, которые затем кэшируются.

Когда осуществляется доступ к содержимому сообщения POP3, поставщик POP3 использует команду RETR для получения всего сообщения.

Метод POP3Message.invalidate можно использовать для аннулирования кэшированных данных без закрытия папки.

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

название Тип Описание
mail.pop3.user строка Имя пользователя по умолчанию для POP3.
mail.pop3.host строка Сервер POP3 для подключения.
mail.pop3.port ИНТ Порт сервера POP3 для подключения, если метод connect () явно не указывает его. По умолчанию 110.
mail.pop3.connectiontimeout ИНТ Значение времени ожидания для сокета в миллисекундах. По умолчанию это бесконечный тайм-аут.
mail.pop3.timeout ИНТ Тайм-аут сокета ввода-вывода в миллисекундах. По умолчанию это бесконечный тайм-аут.
mail.pop3.rsetbeforequit логический Перед закрытием папки перед отправкой команды QUIT отправьте команду POP3 RSET. По умолчанию установлено значение false.
mail.pop3.message.class строка Имя класса подкласса com.sun.mail.pop3.POP3Message. Подкласс может использоваться для обработки (например) нестандартных заголовков Content-Type. Подкласс должен иметь открытый конструктор в форме MyPOP3Message (папка f, int msgno), генерирует исключение MessagingException.
mail.pop3.localaddress строка Локальный адрес (имя хоста) для привязки при создании сокета POP3. По умолчанию используется адрес, выбранный классом Socket.
mail.pop3.localport ИНТ Номер локального порта для привязки при создании сокета POP3. По умолчанию используется номер порта, выбранный классом Socket.
mail.pop3.apop.enable логический Если установлено значение true, используйте APOP вместо USER / PASS для входа на сервер POP3, если сервер POP3 поддерживает APOP. APOP отправляет дайджест пароля, а не открытый текстовый пароль. По умолчанию false.
mail.pop3.socketFactory Сокет Фабрика Если установлен класс, который реализует интерфейс javax.net.SocketFactory, этот класс будет использоваться для создания сокетов POP3.
mail.pop3.socketFactory.class строка Если установлено, указывает имя класса, который реализует интерфейс javax.net.SocketFactory. Этот класс будет использоваться для создания сокетов POP3.
mail.pop3.socketFactory.fallback логический Если задано значение true, сбой при создании сокета с использованием указанного класса фабрики сокетов приведет к созданию сокета с использованием класса java.net.Socket. По умолчанию true.
mail.pop3.socketFactory.port ИНТ Определяет порт для подключения при использовании указанной фабрики сокетов. Если не установлен, будет использоваться порт по умолчанию.
mail.pop3.ssl.enable логический Если установлено значение true, используйте SSL для подключения и используйте порт SSL по умолчанию. По умолчанию установлено значение false для протокола «pop3» и «true» для протокола «pop3s».
mail.pop3.ssl.checkserveridentity логический Если установлено значение true, проверьте идентичность сервера, как указано в RFC 2595. По умолчанию установлено значение false.
mail.pop3.ssl.trust строка Если установлено, и фабрика сокетов не была указана, разрешает использование MailSSLSocketFactory.
Если установлено «*», все хосты являются доверенными.
Если задан список хостов, разделенных пробелами, эти хосты являются доверенными.
В противном случае доверие зависит от сертификата, который предоставляет сервер.
mail.pop3.ssl.socketFactory SSL Socket Factory Если установлен класс, который расширяет класс javax.net.ssl.SSLSocketFactory, этот класс будет использоваться для создания сокетов POP3 SSL.
mail.pop3.ssl.socketFactory.class строка Если установлено, указывает имя класса, который расширяет класс javax.net.ssl.SSLSocketFactory. Этот класс будет использоваться для создания сокетов POP3 SSL.
mail.pop3.ssl.socketFactory.port ИНТ Определяет порт для подключения при использовании указанной фабрики сокетов. Если не установлен, будет использоваться порт по умолчанию.
mail.pop3.ssl.protocols строка Определяет протоколы SSL, которые будут включены для соединений SSL. Значение свойства представляет собой разделенный пробелами список токенов, приемлемых для метода javax.net.ssl.SSLSocket.setEnabledProtocols.
mail.pop3.starttls.enable логический Если установлено значение true, разрешает использование команды STLS (если она поддерживается сервером) для переключения соединения на соединение с защитой TLS перед выполнением каких-либо команд входа в систему. По умолчанию false.
mail.pop3.starttls.required логический Если истина, требует использования команды STLS. Если сервер не поддерживает команду STLS или команда не выполнена, метод подключения завершится ошибкой. По умолчанию false.
mail.pop3.socks.host строка Задает имя хоста прокси-сервера SOCKS5, который будет использоваться для соединений с почтовым сервером.
mail.pop3.socks.port строка Задает номер порта для прокси-сервера SOCKS5.
mail.pop3.disabletop логический Если установлено значение true, команда POP3 TOP не будет использоваться для получения заголовков сообщений. По умолчанию false.
mail.pop3.forgettopheaders логический Если установлено значение true, заголовки, которые могли быть получены с помощью команды POP3 TOP, будут забыты и заменены заголовками, полученными как часть команды POP3 RETR. По умолчанию false.
mail.pop3.filecache.enable логический Если установлено значение true, поставщик POP3 будет кэшировать данные сообщения во временном файле, а не в памяти. Сообщения добавляются в кэш только при доступе к содержимому сообщения. Заголовки сообщений всегда кэшируются в памяти (по запросу). Кэш файлов удаляется, когда папка закрывается или JVM завершается. По умолчанию false.
mail.pop3.filecache.dir строка Если кэш файлов включен, это свойство можно использовать для переопределения каталога по умолчанию, используемого JDK для временных файлов.
mail.pop3.cachewriteto логический Управляет поведением метода writeTo для объекта сообщения POP3. Если установлено значение true, а содержимое сообщения еще не было кэшировано, а ignoreList равно нулю, сообщение кэшируется перед записью. В противном случае сообщение передается прямо в выходной поток без кэширования. По умолчанию false.
mail.pop3.keepmessagecontent логический Если для этого свойства установлено значение true, будет сохранена жесткая ссылка на кэшированное содержимое, что предотвратит повторное использование памяти до тех пор, пока не будет закрыта папка или пока не будет явно недействительным кэшированное содержимое (с помощью метода invalidate). По умолчанию false.

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

Примеры использования POP3-сервера приведены в главе Проверка электронной почты .