JavaMail API - IMAP 伺服器



IMAP 是 **網際網路訊息訪問協議 (Internet Message Access Protocol)** 的縮寫。它是一個應用層網際網路協議,允許電子郵件客戶端訪問遠端郵件伺服器上的電子郵件。IMAP 伺服器通常監聽眾所周知的埠 143。使用 SSL 的 IMAP (IMAPS) 則分配給埠號 993。

IMAP 支援線上和離線兩種操作模式。使用 IMAP 的電子郵件客戶端通常會將郵件保留在伺服器上,直到使用者顯式刪除它們。

包 **com.sun.mail.imap** 是 JavaMail API 的 IMAP 協議提供程式,它提供對 IMAP 訊息儲存的訪問。下表列出了此提供程式的介面和類

類/介面描述
IMAPFolder.ProtocolCommand這是一個用於使用者自定義 IMAP 協議命令的簡單 *介面*。
ACL這是一個類。特定身份驗證識別符號(使用者或組)的訪問控制列表條目。
IMAPFolder此類實現了一個 IMAP 資料夾。
IMAPFolder.FetchProfileItem這是一個用於獲取郵件頭的類。
IMAPMessage此類實現了一個 ReadableMime 物件。
IMAPMessage.FetchProfileCondition此類實現對資料夾中每條郵件進行的測試。
IMAPSSLStore此類提供透過 SSL 訪問 IMAP 訊息儲存的途徑。
IMAPStore此類提供對 IMAP 訊息儲存的訪問。
Rights此類表示身份驗證識別符號(例如,使用者或組)的一組許可權。
Rights.Right此內部類表示單個許可權。
SortTerm根據 RFC 5256 定義的特定排序標準。

關於此提供程式的一些注意事項

  • 此提供程式支援 IMAP4 和 IMAP4rev1 協議。

  • 已連線的 IMAPStore 維持一個 IMAP 協議物件的池,用於與 IMAP 伺服器通訊。當開啟資料夾並需要新的 IMAP 協議物件時,IMAPStore 將從連線池中提供它們,或者在沒有可用物件時建立它們。當資料夾關閉時,如果池……,則其 IMAP 協議物件將返回到連線池。

  • 已連線的 IMAPStore 物件可以維護一個單獨的 IMAP 協議物件,該物件為儲存提供與 IMAP 伺服器的專用連線,也可以不維護。

IMAP 協議提供程式支援以下屬性,這些屬性可以在 JavaMail Session 物件中設定。這些屬性始終設定為字串;“型別”列描述了字串的解釋方式。

名稱型別描述
mail.imap.user字串IMAP 的預設使用者名稱。
mail.imap.host字串要連線到的 IMAP 伺服器。
mail.imap.port整數要連線到的 IMAP 伺服器埠,如果 connect() 方法沒有顯式指定埠,則使用此埠。預設為 143。
mail.imap.partialfetch布林值控制是否應使用 IMAP 部分獲取功能。預設為 true。
mail.imap.fetchsize整數部分獲取大小(以位元組為單位)。預設為 16K。
mail.imap.ignorebodystructuresize布林值IMAP BODYSTRUCTURE 響應包括每個正文部分的確切大小。通常,此大小用於確定要為每個正文部分獲取多少資料。預設為 false。
mail.imap.connectiontimeout整數以毫秒為單位的套接字連線超時值。預設為無限超時。
mail.imap.timeout整數以毫秒為單位的套接字 I/O 超時值。預設為無限超時。
mail.imap.statuscachetimeout整數STATUS 命令響應快取的超時值(以毫秒為單位)。預設為 1000(1 秒)。零表示停用快取。
mail.imap.appendbuffersize整數向 IMAP 資料夾追加時在記憶體中緩衝的訊息的最大大小。
mail.imap.connectionpoolsize整數連線池中可用連線的最大數量。預設為 1。
mail.imap.connectionpooltimeout整數連線池連線的超時值(以毫秒為單位)。預設為 45000(45 秒)。
mail.imap.separatestoreconnection布林值標誌,指示是否為儲存命令使用專用儲存連線。預設為 false。
mail.imap.auth.login.disable布林值如果為 true,則阻止使用非標準 AUTHENTICATE LOGIN 命令,而是使用簡單的 LOGIN 命令。預設為 false。
mail.imap.auth.plain.disable布林值如果為 true,則阻止使用 AUTHENTICATE PLAIN 命令。預設為 false。
mail.imap.auth.ntlm.disable布林值如果為 true,則阻止使用 AUTHENTICATE NTLM 命令。預設為 false。
mail.imap.proxyauth.user字串如果伺服器支援 PROXYAUTH 擴充套件,此屬性指定要充當的使用者名稱稱。使用管理員憑據對伺服器進行身份驗證。身份驗證後,IMAP 提供程式將使用此屬性中指定的使用者名稱稱發出 PROXYAUTH 命令。
mail.imap.localaddress字串建立 IMAP 套接字時要繫結的本地地址(主機名)。預設為 Socket 類選擇的地址。
mail.imap.localport整數建立 IMAP 套接字時要繫結的本地埠號。預設為 Socket 類選擇的埠號。
mail.imap.sasl.enable布林值如果設定為 true,則嘗試使用 javax.security.sasl 包為登入選擇身份驗證機制。預設為 false。
mail.imap.sasl.mechanisms字串要嘗試使用的 SASL 機制名稱的空格或逗號分隔列表。
mail.imap.sasl.authorizationid字串在 SASL 身份驗證中使用的授權 ID。如果未設定,則使用身份驗證 ID(使用者名稱)。
mail.imap.sasl.realm字串用於需要領域的 SASL 身份驗證機制(如 DIGEST-MD5)的領域。
mail.imap.auth.ntlm.domain字串NTLM 身份驗證域。
mail.imap.auth.ntlm.flags整數NTLM 協議特定的標誌。
mail.imap.socketFactory套接字工廠如果設定為實現 javax.net.SocketFactory 介面的類,則此類將用於建立 IMAP 套接字。
mail.imap.socketFactory.class字串如果設定,則指定實現 javax.net.SocketFactory 介面的類的名稱。此類將用於建立 IMAP 套接字。
mail.imap.socketFactory.fallback布林值如果設定為 true,則使用指定的套接字工廠類建立套接字失敗將導致使用 java.net.Socket 類建立套接字。預設為 true。
mail.imap.socketFactory.port整數使用指定的套接字工廠時要連線到的埠。未設定時使用預設埠。
mail.imap.ssl.enable布林值如果設定為 true,則使用 SSL 連線並預設使用 SSL 埠。對於“imap”協議預設為 false,對於“imaps”協議預設為 true。
mail.imap.ssl.checkserveridentity布林值如果設定為 true,則根據 RFC 2595 指定檢查伺服器身份。預設為 false。
mail.imap.ssl.trust字串如果設定,並且未指定套接字工廠,則啟用 MailSSLSocketFactory 的使用。
如果設定為“*”,則信任所有主機。
如果設定為主機名的空格分隔列表,則信任這些主機。
否則,信任取決於伺服器提供的證書。
mail.imap.ssl.socketFactorySSL 套接字工廠如果設定為擴充套件 javax.net.ssl.SSLSocketFactory 類的類,則此類將用於建立 IMAP SSL 套接字。
mail.imap.ssl.socketFactory.class字串如果設定,則指定擴充套件 javax.net.ssl.SSLSocketFactory 類的類的名稱。此類將用於建立 IMAP SSL 套接字。
mail.imap.ssl.socketFactory.port整數使用指定的套接字工廠時要連線到的埠。如果未設定,則使用預設埠。
mail.imap.ssl.protocols字串指定將為 SSL 連線啟用的 SSL 協議。屬性值為 javax.net.ssl.SSLSocket.setEnabledProtocols 方法可接受的令牌的空格分隔列表。
mail.imap.starttls.enable布林值如果為 true,則啟用 STARTTLS 命令的使用(如果伺服器支援),以便在發出任何登入命令之前將連線切換到受 TLS 保護的連線。預設為 false。
mail.imap.starttls.required布林值如果為 true,則需要使用 STARTTLS 命令。如果伺服器不支援 STARTTLS 命令,或者命令失敗,則 connect 方法將失敗。預設為 false。
mail.imap.socks.host字串指定將用於連線到郵件伺服器的 SOCKS5 代理伺服器的主機名。
mail.imap.socks.port字串指定 SOCKS5 代理伺服器的埠號。只有當代理伺服器未使用標準埠號 1080 時才需要使用此埠。
mail.imap.minidletime整數此屬性設定延遲(以毫秒為單位)。如果未設定,則預設為 10 毫秒。
mail.imap.enableimapevents布林值啟用將特定於 IMAP 的特殊事件傳遞到 Store 的 ConnectionListener。如果為 true,則在 Store 的空閒方法期間接收到的非請求響應將作為 ConnectionEvents 傳送,其型別為 IMAPStore.RESPONSE。事件的訊息將是原始 IMAP 響應字串。預設情況下,不會發送這些事件。
mail.imap.folder.class字串com.sun.mail.imap.IMAPFolder 的子類的類名。此子類可用於提供對其他 IMAP 命令的支援。此子類必須具有以下形式的公共建構函式:public MyIMAPFolder(String fullName, char separator, IMAPStore store, Boolean isNamespace) 和 public MyIMAPFolder(ListInfo li, IMAPStore store)

通常,應用程式不需要直接使用此包中的類。相反,它們應該使用 javax.mail 包(和子包)定義的 API。應用程式絕不應直接構造 IMAPStore 或 IMAPFolder 的例項。相反,它們應該使用 Session 方法 getStore 獲取適當的 Store 物件,並從中獲取 Folder 物件。

使用 IMAP 伺服器的示例在第 配額管理 章中進行了演示。

廣告
© . All rights reserved.