JavaMail API - POP3 伺服器



郵局協議 (POP) 是一種應用層網際網路標準協議,本地電子郵件客戶端使用它透過 TCP/IP 連線從遠端伺服器檢索電子郵件。POP 支援簡單的下載和刪除需求,以訪問遠端郵箱。POP3 伺服器監聽眾所周知的埠 110。

com.sun.mail.pop3 包是 JavaMail API 的 POP3 協議提供程式,它提供對 POP3 訊息儲存的訪問。下表列出了此包中的類

名稱描述
POP3FolderPOP3 資料夾(只能是“INBOX”)。
POP3MessagePOP3 訊息。
POP3SSLStore使用 SSL 的 POP3 訊息儲存。
POP3StorePOP3 訊息儲存。

關於此提供程式的一些需要說明的要點

  • POP3 提供程式僅支援一個名為INBOX的資料夾。由於 POP3 協議的限制,JavaMail API 的許多功能(如事件通知、資料夾管理、標誌管理等)都不允許。

  • 透過使用協議名稱pop3或表單pop3://user:password@host:port/INBOX的 URL,透過 JavaMail API 訪問 POP3 提供程式。

  • POP3 不支援永久標誌。例如,Flags.Flag.RECENT 標誌永遠不會為 POP3 訊息設定。應用程式需要自行確定 POP3 郵箱中的哪些郵件是新的

  • POP3 不支援 Folder.expunge() 方法。要刪除和清除訊息,請在訊息上設定 Flags.Flag.DELETED 標誌,並使用 Folder.close(true) 方法關閉資料夾。

  • POP3 不提供接收日期,因此 getReceivedDate 方法將返回 null。

  • 當訪問 POP3 訊息的標頭時,POP3 提供程式使用 TOP 命令獲取所有標頭,然後將其快取。

  • 當訪問 POP3 訊息的內容時,POP3 提供程式使用 RETR 命令獲取整個訊息。

  • POP3Message.invalidate 方法可用於使快取資料無效,而無需關閉資料夾。

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

名稱型別描述
mail.pop3.user字串POP3 的預設使用者名稱。
mail.pop3.host字串要連線到的 POP3 伺服器。
mail.pop3.port整數要連線到的 POP3 伺服器埠,如果 connect() 方法沒有明確指定埠。預設為 110。
mail.pop3.connectiontimeout整數以毫秒為單位的套接字連線超時值。預設為無限超時。
mail.pop3.timeout整數以毫秒為單位的套接字 I/O 超時值。預設為無限超時。
mail.pop3.rsetbeforequit布林值在關閉資料夾時傳送 POP3 RSET 命令,然後再發送 QUIT 命令。預設為 false。
mail.pop3.message.class字串com.sun.mail.pop3.POP3Message 的子類的類名。子類可用於處理(例如)非標準的 Content-Type 標頭。子類必須具有表單 MyPOP3Message(Folder f, int msgno) throws MessagingException 的公共建構函式。
mail.pop3.localaddress字串建立 POP3 套接字時要繫結的本地地址(主機名)。預設為 Socket 類選擇的地址。
mail.pop3.localport整數建立 POP3 套接字時要繫結的本地埠號。預設為 Socket 類選擇的埠號。
mail.pop3.apop.enable布林值如果設定為 true,則使用 APOP 而不是 USER/PASS 登入到 POP3 伺服器(如果 POP3 伺服器支援 APOP)。APOP 傳送密碼的摘要而不是明文密碼。預設為 false。
mail.pop3.socketFactory套接字工廠如果設定為實現 javax.net.SocketFactory 介面的類,則此類將用於建立 POP3 套接字。
mail.pop3.socketFactory.class字串如果設定,則指定實現 javax.net.SocketFactory 介面的類的名稱。此類將用於建立 POP3 套接字。
mail.pop3.socketFactory.fallback布林值如果設定為 true,則使用指定的套接字工廠類建立套接字失敗將導致使用 java.net.Socket 類建立套接字。預設為 true。
mail.pop3.socketFactory.port整數指定使用指定的套接字工廠時要連線到的埠。如果未設定,將使用預設埠。
mail.pop3.ssl.enable布林值如果設定為 true,則使用 SSL 連線並預設使用 SSL 埠。對於“pop3”協議,預設為 false;對於“pop3s”協議,預設為 true。
mail.pop3.ssl.checkserveridentity布林值如果設定為 true,則根據 RFC 2595 指定的檢查伺服器身份。預設為 false。
mail.pop3.ssl.trust字串如果設定,並且未指定套接字工廠,則啟用 MailSSLSocketFactory 的使用。
如果設定為“*”,則所有主機都受信任。
如果設定為以空格分隔的主機列表,則這些主機受信任。
否則,信任取決於伺服器提供的證書。
mail.pop3.ssl.socketFactorySSL 套接字工廠如果設定為擴充套件 javax.net.ssl.SSLSocketFactory 類的類,則此類將用於建立 POP3 SSL 套接字。
mail.pop3.ssl.socketFactory.class字串如果設定,則指定擴充套件 javax.net.ssl.SSLSocketFactory 類的類的名稱。此類將用於建立 POP3 SSL 套接字。
mail.pop3.ssl.socketFactory.port整數指定使用指定的套接字工廠時要連線到的埠。如果未設定,將使用預設埠。
mail.pop3.ssl.protocols字串指定將為 SSL 連線啟用的 SSL 協議。屬性值是 javax.net.ssl.SSLSocket.setEnabledProtocols 方法可接受的標記的空格分隔列表。
mail.pop3.starttls.enable布林值如果為 true,則啟用 STLS 命令的使用(如果伺服器支援),以便在發出任何登入命令之前將連線切換到 TLS 保護的連線。預設為 false。
mail.pop3.starttls.required布林值如果為 true,則需要使用 STLS 命令。如果伺服器不支援 STLS 命令,或者命令失敗,則 connect 方法將失敗。預設為 false。
mail.pop3.socks.host字串指定將用於連線到郵件伺服器的 SOCKS5 代理伺服器的主機名。
mail.pop3.socks.port字串指定 SOCKS5 代理伺服器的埠號。
mail.pop3.disabletop布林值如果設定為 true,則不會使用 POP3 TOP 命令獲取郵件標頭。預設為 false。
mail.pop3.forgettopheaders布林值如果設定為 true,則可能已使用 POP3 TOP 命令檢索的標頭將被遺忘,並替換為作為 POP3 RETR 命令的一部分檢索的標頭。預設為 false。
mail.pop3.filecache.enable布林值如果設定為 true,則 POP3 提供程式將在臨時檔案中快取訊息資料,而不是在記憶體中。僅在訪問訊息內容時才會將訊息新增到快取中。訊息標頭始終在記憶體中快取(按需)。關閉資料夾或 JVM 終止時,將刪除檔案快取。預設為 false。
mail.pop3.filecache.dir字串如果啟用了檔案快取,則可以使用此屬性覆蓋 JDK 用於臨時檔案的預設目錄。
mail.pop3.cachewriteto布林值控制 POP3 訊息物件上 writeTo 方法的行為。如果設定為 true,並且尚未快取訊息內容,並且 ignoreList 為 null,則在寫入之前快取訊息。否則,訊息將直接流式傳輸到輸出流,而不會被快取。預設為 false。
mail.pop3.keepmessagecontent布林值如果此屬性設定為 true,則將保留對快取內容的硬引用,防止記憶體被重用,直到關閉資料夾或顯式取消快取內容的快取(使用 invalidate 方法)。預設為 false。

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

使用 POP3 伺服器的示例在第 檢查郵件 章中進行了演示。

廣告

© . All rights reserved.