JavaMail API - serwery IMAP

IMAP to skrót od Internet Message Access Protocol. Jest to protokół internetowy warstwy aplikacji, który umożliwia klientowi poczty elektronicznej dostęp do poczty na zdalnym serwerze poczty. Serwer IMAP zwykle nasłuchuje na dobrze znanym porcie 143. IMAP przez SSL (IMAPS) jest przypisany do portu o numerze 993.

IMAP obsługuje tryby działania on-line i off-line. Klienci poczty e-mail korzystający z protokołu IMAP zazwyczaj pozostawiają wiadomości na serwerze, dopóki użytkownik ich nie usunie.

Pakiet com.sun.mail.imapjest dostawcą protokołu IMAP dla JavaMail API, który zapewnia dostęp do magazynu wiadomości IMAP. Poniższa tabela zawiera interfejs i klasy tego dostawcy:

Klasa / interfejs Opis
IMAPFolder.ProtocolCommand To prosty interfejs dla poleceń protokołu IMAP zdefiniowanych przez użytkownika.
ACL To jest klasa. Wpis na liście kontroli dostępu dla określonego identyfikatora uwierzytelniania (użytkownika lub grupy).
IMAPFolder Ta klasa implementuje folder IMAP.
IMAPFolder.FetchProfileItem To klasa do pobierania nagłówków.
IMAPMessage Ta klasa implementuje obiekt ReadableMime.
IMAPMessage.FetchProfileCondition Ta klasa implementuje test, który ma zostać wykonany dla każdej wiadomości w folderze.
IMAPSSLStore Ta klasa zapewnia dostęp do magazynu wiadomości IMAP przez SSL.
IMAPStore Ta klasa zapewnia dostęp do magazynu wiadomości IMAP.
Prawa Ta klasa reprezentuje zestaw uprawnień dla identyfikatora uwierzytelniania (na przykład użytkownika lub grupy).
Prawa. Prawo Ta klasa wewnętrzna reprezentuje indywidualne prawo.
SortTerm Określone kryteria sortowania, zgodnie z definicją w dokumencie RFC 5256.

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

  • Ten dostawca obsługuje protokoły IMAP4 i IMAP4rev1.

  • Połączony IMAPStore utrzymuje pulę obiektów protokołu IMAP do użytku w komunikacji z serwerem IMAP. Gdy foldery są otwierane i potrzebne są nowe obiekty protokołu IMAP, IMAPStore udostępni je z puli połączeń lub utworzy je, jeśli żadne nie są dostępne. Gdy folder jest zamknięty, jego obiekt protokołu IMAP jest zwracany do puli połączeń, jeśli jest to pula.

  • Połączony obiekt IMAPStore może, ale nie musi, utrzymywać oddzielny obiekt protokołu IMAP, który zapewnia sklepowi dedykowane połączenie z serwerem IMAP.

Dostawca protokołu IMAP obsługuje następujące właściwości, które można ustawić w obiekcie JavaMail Session. Właściwości są zawsze ustawiane jako ciągi; theType kolumna opisuje, jak jest interpretowany ciąg.

Nazwa Rodzaj Opis
mail.imap.user Strunowy Domyślna nazwa użytkownika dla IMAP.
mail.imap.host Strunowy Serwer IMAP, z którym chcesz się połączyć.
mail.imap.port int Port serwera IMAP, z którym należy się połączyć, jeśli metoda connect () nie określa go bezpośrednio. Domyślnie 143.
mail.imap.partialfetch boolean Określa, czy należy używać funkcji częściowego pobierania IMAP. Domyślnie true.
mail.imap.fetchsize int Rozmiar częściowego pobrania w bajtach. Domyślnie 16K.
mail.imap.ignorebodystructuresize boolean Odpowiedź IMAP BODYSTRUCTURE zawiera dokładny rozmiar każdej części ciała. Zwykle ten rozmiar jest używany do określenia, ile danych należy pobrać dla każdej części ciała. Domyślnie false.
mail.imap.connectiontimeout int Wartość limitu czasu połączenia gniazda w milisekundach. Domyślnie jest nieskończony limit czasu.
mail.imap.timeout int Wartość limitu czasu we / wy gniazda w milisekundach. Domyślnie jest nieskończony limit czasu.
mail.imap.statuscachetimeout int Wartość limitu czasu w milisekundach dla pamięci podręcznej odpowiedzi na polecenie STATUS. Wartość domyślna to 1000 (1 sekunda). Zero wyłącza pamięć podręczną.
mail.imap.appendbuffersize int Maksymalny rozmiar wiadomości do buforowania w pamięci podczas dołączania do folderu IMAP.
mail.imap.connectionpoolsize int Maksymalna liczba dostępnych połączeń w puli połączeń. Wartość domyślna to 1.
mail.imap.connectionpooltimeout int Wartość limitu czasu w milisekundach dla połączeń puli połączeń. Wartość domyślna to 45000 (45 sekund).
mail.imap.separatestoreconnection boolean Flaga wskazująca, czy używać dedykowanego połączenia magazynu dla poleceń magazynu. Wartość domyślna to false.
mail.imap.auth.login.disable boolean Jeśli prawda, zapobiega użyciu niestandardowego polecenia AUTHENTICATE LOGIN, zamiast tego używa zwykłego polecenia LOGIN. Wartość domyślna to false.
mail.imap.auth.plain.disable boolean Jeśli prawda, zapobiega użyciu polecenia AUTHENTICATE PLAIN. Wartość domyślna to false.
mail.imap.auth.ntlm.disable boolean Jeśli prawda, zapobiega użyciu polecenia AUTHENTICATE NTLM. Wartość domyślna to false.
mail.imap.proxyauth.user Strunowy Jeśli serwer obsługuje rozszerzenie PROXYAUTH, ta właściwość określa nazwę użytkownika, który ma działać. Uwierzytelnij się na serwerze przy użyciu poświadczeń administratora. Po uwierzytelnieniu dostawca IMAP wyda polecenie PROXYAUTH z nazwą użytkownika określoną w tej właściwości.
mail.imap.localaddress Strunowy Adres lokalny (nazwa hosta) do powiązania podczas tworzenia gniazda IMAP. Domyślnie adres wybrany przez klasę Socket.
mail.imap.localport int Numer portu lokalnego do powiązania podczas tworzenia gniazda IMAP. Domyślnie numer portu wybrany przez klasę Socket.
mail.imap.sasl.enable boolean Jeśli ma wartość true, spróbuj użyć pakietu javax.security.sasl, aby wybrać mechanizm uwierzytelniania do logowania. Domyślnie false.
mail.imap.sasl.mechanizmy Strunowy Lista oddzielonych spacjami lub przecinkami nazw mechanizmów SASL, które mają zostać użyte.
mail.imap.sasl.authorizationid Strunowy Identyfikator autoryzacji do wykorzystania w uwierzytelnianiu SASL. Jeśli nie jest ustawione, używany jest identyfikator uwierzytelniania (nazwa użytkownika).
mail.imap.sasl.realm Strunowy Dziedzina, która ma być używana z mechanizmami uwierzytelniania SASL, które wymagają dziedziny, na przykład DIGEST-MD5.
mail.imap.auth.ntlm.domain Strunowy Domena uwierzytelniania NTLM.
mail.imap.auth.ntlm.flags int Flagi specyficzne dla protokołu NTLM.
mail.imap.socketFactory Fabryka gniazd Jeśli jest ustawiona na klasę implementującą interfejs javax.net.SocketFactory, ta klasa będzie używana do tworzenia gniazd IMAP.
mail.imap.socketFactory.class Strunowy Jeśli jest ustawiona, określa nazwę klasy, która implementuje interfejs javax.net.SocketFactory. Ta klasa będzie używana do tworzenia gniazd IMAP.
mail.imap.socketFactory.fallback boolean W 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.imap.socketFactory.port int Określa port, z którym należy się połączyć podczas korzystania z określonej fabryki gniazd. Port domyślny jest używany, gdy nie jest ustawiony.
mail.imap.ssl.enable boolean Jeśli jest ustawiona na wartość true, używaj protokołu SSL do łączenia się i domyślnie używaj portu SSL. Wartość domyślna to false dla protokołu „imap” i true dla protokołu „imaps”.
mail.imap.ssl.checkserveridentity boolean Jeśli ma wartość true, sprawdź tożsamość serwera określoną w dokumencie RFC 2595. Wartość domyślna to false.
mail.imap.ssl.trust Strunowy Jeś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.imap.ssl.socketFactory SSL Socket Factory Jeśli jest ustawiona na klasę, która rozszerza klasę javax.net.ssl.SSLSocketFactory, ta klasa będzie używana do tworzenia gniazd IMAP SSL.
mail.imap.ssl.socketFactory.class Strunowy Jeśli jest ustawiona, określa nazwę klasy, która rozszerza klasę javax.net.ssl.SSLSocketFactory. Ta klasa będzie używana do tworzenia gniazd IMAP SSL.
mail.imap.ssl.socketFactory.port int Okreś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.imap.ssl.protocols strunowy Okreś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.imap.starttls.enable boolean Jeśli prawda, włącza użycie polecenia STARTTLS (jeśli jest obsługiwane przez serwer) w celu przełączenia połączenia na połączenie chronione TLS przed wydaniem jakichkolwiek poleceń logowania. Wartość domyślna to false.
mail.imap.starttls.required boolean Jeśli prawda, wymaga użycia polecenia STARTTLS. Jeśli serwer nie obsługuje polecenia STARTTLS lub polecenie nie powiedzie się, metoda połączenia zakończy się niepowodzeniem. Domyślnie false.
mail.imap.socks.host strunowy Określa nazwę hosta serwera proxy SOCKS5, który będzie używany do połączeń z serwerem poczty.
mail.imap.socks.port strunowy Określa numer portu dla serwera proxy SOCKS5. Powinno być używane tylko wtedy, gdy serwer proxy nie używa standardowego numeru portu 1080.
mail.imap.minidletime int Ta właściwość ustawia opóźnienie w milisekundach. Jeśli nie jest ustawiona, wartość domyślna to 10 milisekund.
mail.imap.enableimapevents boolean Włącz specjalne zdarzenia specyficzne dla IMAP, które mają być dostarczane do ConnectionListener sklepu. Jeśli prawda, niechciane odpowiedzi otrzymane podczas bezczynnej metody Sklepu będą wysyłane jako zdarzenia ConnectionEvents o typie IMAPStore.RESPONSE. Wiadomość o zdarzeniu będzie nieprzetworzonym ciągiem odpowiedzi IMAP. Domyślnie te zdarzenia nie są wysyłane.
mail.imap.folder.class Strunowy Nazwa klasy podklasy com.sun.mail.imap.IMAPFolder. Ta podklasa może służyć do obsługi dodatkowych poleceń IMAP. Podklasa musi mieć publiczne konstruktory w postaci public MyIMAPFolder (String fullName, char separator, IMAPStore store, Boolean isNamespace) i public MyIMAPFolder (ListInfo li, IMAPStore store)

Ogólnie 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 tworzyć instancji IMAPStore ani IMAPFolder. Zamiast tego powinni użyć metody Session getStore, aby uzyskać odpowiedni obiekt Store, a następnie pobrać obiekty Folder.

Przykłady wykorzystania serwera IMAP przedstawiono w rozdziale Zarządzanie limitami .