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 многие возможности API JavaMail, такие как уведомление о событиях, управление папками, управление флагами и т. Д., Запрещены.

  • Доступ к провайдеру 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 int Порт сервера POP3 для подключения, если в методе connect () он явно не указан. По умолчанию 110.
mail.pop3.connectiontimeout int Значение тайм-аута подключения к сокету в миллисекундах. По умолчанию - бесконечный тайм-аут.
mail.pop3.timeout int Значение тайм-аута ввода-вывода сокета в миллисекундах. По умолчанию - бесконечный тайм-аут.
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 int Номер локального порта для привязки при создании сокета 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 int Задает порт для подключения при использовании указанной фабрики сокетов. Если не установлен, будет использоваться порт по умолчанию.
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 Если установлен класс, расширяющий класс javax.net.ssl.SSLSocketFactory, этот класс будет использоваться для создания сокетов SSL POP3.
mail.pop3.ssl.socketFactory.class Строка Если установлено, указывает имя класса, расширяющего класс javax.net.ssl.SSLSocketFactory. Этот класс будет использоваться для создания сокетов SSL POP3.
mail.pop3.ssl.socketFactory.port int Задает порт для подключения при использовании указанной фабрики сокетов. Если не установлен, будет использоваться порт по умолчанию.
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 имеет значение null, сообщение кэшируется перед записью. В противном случае сообщение передается прямо в выходной поток без кэширования. По умолчанию - false.
mail.pop3.keepmessagecontent логический Если для этого свойства установлено значение true, жесткая ссылка на кэшированное содержимое будет сохраняться, предотвращая повторное использование памяти до тех пор, пока папка не будет закрыта или кэшированное содержимое не будет явно признано недействительным (с использованием метода invalidate). По умолчанию - false.

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

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