- JavaMail API 教程
- JavaMail - 首頁
- JavaMail API - 概述
- JavaMail - 環境設定
- JavaMail - 核心類
- JavaMail - 傳送郵件
- JavaMail - 檢視郵件
- JavaMail - 獲取郵件
- JavaMail - 身份驗證
- JavaMail - 回覆郵件
- JavaMail - 轉發郵件
- JavaMail - 刪除郵件
- JavaMail - Gmail SMTP 伺服器
- JavaMail - 資料夾管理
- JavaMail - 配額管理
- JavaMail - 退回郵件
- JavaMail API 協議
- JavaMail - SMTP 伺服器
- JavaMail - IMAP 伺服器
- JavaMail - POP3 伺服器
- JavaMail API 有用資源
- JavaMail - 快速指南
- JavaMail - 有用資源
- JavaMail - 討論
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.socketFactory | SSL 套接字工廠 | 如果設定為擴充套件 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 伺服器的示例在第 配額管理 章中進行了演示。