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 .