JavaMail API - serwery POP3

Post Office Protocol (POP) to standardowy protokół internetowy warstwy aplikacji używany przez lokalnych klientów poczty e-mail do pobierania wiadomości e-mail ze zdalnego serwera za pośrednictwem połączenia TCP / IP. POP obsługuje proste wymagania dotyczące pobierania i usuwania w celu uzyskania dostępu do zdalnych skrzynek pocztowych. Serwer POP3 nasłuchuje na dobrze znanym porcie 110.

Pakiet com.sun.mail.pop3jest dostawcą protokołu POP3 dla JavaMail API, który zapewnia dostęp do magazynu wiadomości POP3. Poniższa tabela zawiera listę klas w tym pakiecie:

NazwaOpis
POP3FolderFolder POP3 (może to być tylko „INBOX”).
POP3MessageWiadomość POP3.
POP3SSLStoreMagazyn wiadomości POP3 korzystający z SSL.
POP3StoreMagazyn wiadomości POP3.

Kilka punktów, na które należy zwrócić uwagę powyżej tego dostawcy:

  • Dostawca POP3 obsługuje tylko jeden folder o nazwie INBOX. Ze względu na ograniczenia protokołu POP3, wiele funkcji API JavaMail, takich jak powiadamianie o zdarzeniach, zarządzanie folderami, zarządzanie flagami itp., Jest niedozwolonych.

  • Dostęp do dostawcy POP3 uzyskuje się za pośrednictwem interfejsów API JavaMail przy użyciu nazwy protokołu pop3 lub adresu URL w postaci pop3: // użytkownik: hasło @ host: port / INBOX " .

  • POP3 nie obsługuje trwałych flag. Na przykład flaga Flags.Flag.RECENT nigdy nie zostanie ustawiona dla wiadomości POP3. Do aplikacji należy określenie, które wiadomości w skrzynce pocztowej POP3 są nowe .

  • POP3 nie obsługuje metody Folder.expunge (). Aby usunąć i zniszczyć wiadomości, ustaw flagę Flags.Flag.DELETED na wiadomościach i zamknij folder przy użyciu metody Folder.close (true).

  • POP3 nie podaje daty odebrania , więc metoda getReceivedDate zwróci wartość null.

  • Kiedy uzyskuje się dostęp do nagłówków wiadomości POP3, dostawca POP3 używa polecenia TOP, aby pobrać wszystkie nagłówki, które są następnie buforowane.

  • Kiedy uzyskuje się dostęp do treści wiadomości POP3, dostawca POP3 używa polecenia RETR do pobrania całej wiadomości.

  • Metoda POP3Message.invalidate może służyć do unieważniania danych w pamięci podręcznej bez zamykania folderu.

Dostawca protokołu POP3 obsługuje następujące właściwości, które można ustawić w obiekcie sesji JavaMail. Właściwości są zawsze ustawiane jako ciągi; kolumna Type opisuje sposób interpretacji ciągu.

NazwaRodzajOpis
mail.pop3.userStrunowyDomyślna nazwa użytkownika dla POP3.
mail.pop3.hostStrunowySerwer POP3 do połączenia.
mail.pop3.portintPort serwera POP3, z którym należy się połączyć, jeśli metoda connect () nie określa takiego portu. Domyślnie 110.
mail.pop3.connectiontimeoutintWartość limitu czasu połączenia gniazda w milisekundach. Domyślnie jest nieskończony limit czasu.
mail.pop3.timeoutintWartość limitu czasu we / wy gniazda w milisekundach. Domyślnie jest nieskończony limit czasu.
mail.pop3.rsetbeforequitbooleanWyślij polecenie POP3 RSET podczas zamykania folderu, przed wysłaniem polecenia QUIT. Wartość domyślna to false.
mail.pop3.message.class StrunowyNazwa klasy podklasy com.sun.mail.pop3.POP3Message. Podklasa może służyć do obsługi (na przykład) niestandardowych nagłówków Content-Type. Podklasa musi mieć publicznego konstruktora w postaci MyPOP3Message (Folder f, int msgno) zgłasza MessagingException.
mail.pop3.localaddressStrunowyAdres lokalny (nazwa hosta) do powiązania podczas tworzenia gniazda POP3. Domyślnie adres wybrany przez klasę Socket.
mail.pop3.localport intNumer portu lokalnego do powiązania podczas tworzenia gniazda POP3. Domyślnie numer portu wybrany przez klasę Socket.
mail.pop3.apop.enable booleanJeśli ustawione na true, użyj APOP zamiast USER / PASS, aby zalogować się do serwera POP3, jeśli serwer POP3 obsługuje APOP. APOP wysyła skrót hasła zamiast hasła w postaci zwykłego tekstu. Domyślnie false.
mail.pop3.socketFactoryFabryka gniazdJeśli jest ustawiona na klasę, która implementuje interfejs javax.net.SocketFactory, ta klasa będzie używana do tworzenia gniazd POP3.
mail.pop3.socketFactory.classStrunowyJeśli jest ustawiona, określa nazwę klasy, która implementuje interfejs javax.net.SocketFactory. Ta klasa będzie używana do tworzenia gniazd POP3.
mail.pop3.socketFactory.fallbackbooleanW przypadku ustawienia wartości true niepowodzenie utworzenia gniazda przy użyciu określonej klasy fabrycznej gniazda spowoduje utworzenie gniazda przy użyciu klasy java.net.Socket. Domyślnie true.
mail.pop3.socketFactory.port intOkreśla port, z którym należy się połączyć podczas korzystania z określonej fabryki gniazd. Jeśli nie jest ustawiony, zostanie użyty port domyślny.
mail.pop3.ssl.enablebooleanJeśli jest ustawiona na wartość true, używaj protokołu SSL do łączenia się i domyślnie używaj portu SSL. Domyślnie false dla protokołu „pop3” i true dla protokołu „pop3s”.
mail.pop3.ssl.checkserveridentity booleanJeśli ma wartość true, sprawdź tożsamość serwera określoną w dokumencie RFC 2595. Wartość domyślna to false.
mail.pop3.ssl.trust StrunowyJeśli jest ustawiona, a fabryka gniazd nie została określona, ​​włącza użycie MailSSLSocketFactory.
Jeśli ustawione na „*”, wszystkie hosty są zaufane.
Jeśli jest ustawiona na listę hostów oddzielonych spacjami, te hosty są zaufane.
W przeciwnym razie zaufanie zależy od certyfikatu, który przedstawia serwer.
mail.pop3.ssl.socketFactorySSL Socket FactoryJeśli jest ustawiona na klasę, która rozszerza klasę javax.net.ssl.SSLSocketFactory, ta klasa będzie używana do tworzenia gniazd POP3 SSL.
mail.pop3.ssl.socketFactory.class StrunowyJeśli jest ustawiona, określa nazwę klasy, która rozszerza klasę javax.net.ssl.SSLSocketFactory. Ta klasa będzie używana do tworzenia gniazd POP3 SSL.
mail.pop3.ssl.socketFactory.port intOkreśla port, z którym należy się połączyć podczas korzystania z określonej fabryki gniazd. Jeśli nie jest ustawiony, zostanie użyty port domyślny.
mail.pop3.ssl.protocolsstrunowyOkreśla protokoły SSL, które będą włączone dla połączeń SSL. Wartość właściwości to lista tokenów oddzielonych spacjami, akceptowana przez metodę javax.net.ssl.SSLSocket.setEnabledProtocols.
mail.pop3.starttls.enable booleanJeśli prawda, włącza użycie polecenia STLS (jeśli jest obsługiwane przez serwer) w celu przełączenia połączenia na połączenie chronione TLS przed wydaniem jakichkolwiek poleceń logowania. Domyślnie false.
mail.pop3.starttls.required booleanJeśli prawda, wymaga użycia polecenia STLS. Jeśli serwer nie obsługuje polecenia STLS lub polecenie się nie powiedzie, metoda połączenia zakończy się niepowodzeniem. Domyślnie false.
mail.pop3.socks.hoststrunowyOkreśla nazwę hosta serwera proxy SOCKS5, który będzie używany do połączeń z serwerem poczty.
mail.pop3.socks.port strunowyOkreśla numer portu dla serwera proxy SOCKS5.
mail.pop3.disabletop booleanJeśli ma wartość true, polecenie POP3 TOP nie będzie używane do pobierania nagłówków wiadomości. Domyślnie false.
mail.pop3.forgettopheadersbooleanJeśli ma wartość true, nagłówki, które mogły zostać pobrane za pomocą polecenia POP3 TOP, zostaną zapomniane i zastąpione nagłówkami pobranymi w ramach polecenia POP3 RETR. Domyślnie false.
mail.pop3.filecache.enablebooleanJeśli ma wartość true, dostawca POP3 będzie buforował dane wiadomości w pliku tymczasowym, a nie w pamięci. Wiadomości są dodawane do pamięci podręcznej tylko podczas uzyskiwania dostępu do treści wiadomości. Nagłówki wiadomości są zawsze buforowane w pamięci (na żądanie). Pamięć podręczna plików jest usuwana po zamknięciu folderu lub zakończeniu pracy maszyny JVM. Domyślnie false.
mail.pop3.filecache.dir StrunowyJeśli pamięć podręczna plików jest włączona, tej właściwości można użyć do przesłonięcia domyślnego katalogu używanego przez pakiet JDK dla plików tymczasowych.
mail.pop3.cachewriteto booleanKontroluje zachowanie metody writeTo w obiekcie wiadomości POP3. Jeśli jest ustawiona na true, a treść wiadomości nie została jeszcze zapisana w pamięci podręcznej, a ignoreList ma wartość null, wiadomość jest buforowana przed zapisaniem. W przeciwnym razie wiadomość jest przesyłana strumieniowo bezpośrednio do strumienia wyjściowego bez buforowania. Domyślnie false.
mail.pop3.keepmessagecontentbooleanJeśli ta właściwość ma wartość true, zostanie zachowane twarde odniesienie do zawartości pamięci podręcznej, co zapobiega ponownemu użyciu pamięci do momentu zamknięcia folderu lub jawnego unieważnienia zawartości pamięci podręcznej (przy użyciu metody unieważnienia). Domyślnie false.

Generalnie aplikacje nie powinny bezpośrednio używać klas z tego pakietu. Zamiast tego powinni używać interfejsów API zdefiniowanych przez pakiet javax.mail (i podpakiety). Aplikacje nigdy nie powinny bezpośrednio konstruować wystąpień POP3Store lub POP3Folder . Zamiast tego powinni użyć metody Session getStore, aby uzyskać odpowiedni obiekt Store, a następnie pobrać obiekty Folder.

Przykłady wykorzystania serwera POP3 zostały przedstawione w rozdziale Sprawdzanie wiadomości e-mail .