- 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 - 資料夾管理
到目前為止,我們在之前的章節中主要處理的是收件箱 (INBOX) 資料夾。這是大多數郵件所在的預設資料夾。有些系統可能將其稱為 INBOX,而其他系統可能將其稱為其他名稱。但是,您可以始終使用名稱 INBOX 透過 JavaMail API 訪問它。
JavaMail API 將資料夾表示為抽象 Folder 類的例項。
public abstract class Folder extends Object
此類聲明瞭用於從伺服器請求命名資料夾、從資料夾中刪除郵件、在資料夾中搜索特定郵件、列出資料夾中的郵件等的方法。
開啟資料夾
我們不能直接建立資料夾,因為Folder類中唯一的建構函式是protected。我們可以從以下物件獲取Folder:
會話 (Session)
儲存 (Store)
或其他資料夾
所有上述類都具有簽名類似的 getFolder() 方法。
public abstract Folder getFolder(String name) throws MessagingException
一些有助於獲取Folder物件的方法是:
| 方法 | 描述 |
|---|---|
| boolean exists() | 檢查資料夾是否存在。在獲取 Folder 物件之前使用此方法。 |
| abstract void open(int mode) | 獲取Folder後,它處於關閉狀態。使用此方法開啟它。mode可以是Folder.READ_ONLY或Folder.READ_WRITE。 |
| abstract boolean isOpen() | 如果資料夾已開啟,此方法返回true;如果已關閉,則返回false。 |
| abstract void close(boolean expunge) | 關閉資料夾。如果expunge引數為true,則資料夾中任何已刪除的郵件都將從伺服器上的實際檔案中刪除。否則,它們只是被標記為已刪除,但郵件仍然可以恢復。 |
基本資料夾資訊
以下是 Folder 類中一些返回有關資料夾基本資訊的方法:
| 方法 | 描述 |
|---|---|
| abstract String getName() | 返回資料夾的名稱,例如“TutorialsPoint Mail”。 |
| abstract String getFullName() | 返回從根目錄開始的完整分層名稱,例如“books/Manisha/TutorialsPoint Mail”。 |
| URLName getURLName() | 返回表示此資料夾的 URLName。 |
| abstract Folder getParent() | 返回包含此資料夾的資料夾名稱,即父資料夾。例如,在之前的“TutorialsPoint Mail”示例中為“Manisha”。 |
| abstract int getType() | 返回一個整數,指示資料夾是否可以包含郵件和/或其他資料夾。 |
| int getMode() | 它返回兩個命名常量之一:Folder.READ_ONLY 或 Folder.READ_WRITE,或者在模式未知時返回 -1。 |
| Store getStore() | 返回從中檢索此資料夾的 Store 物件。 |
| abstract char getSeparator() | 返回分隔符字元,該字元將此 Folder 的路徑名與直接子資料夾的名稱分隔開。 |
管理資料夾
以下是幫助管理資料夾的一些方法:
| 方法 | 描述 |
|---|---|
| abstract boolean create(int type) | 這將在此資料夾的 Store 中建立一個新資料夾。其中type將是:Folder.HOLDS_MESSAGES 或 Folder.HOLDS_FOLDERS。如果資料夾成功建立,則返回true;否則返回false。 |
| abstract boolean delete(boolean recurse) | 只有當資料夾關閉時,此方法才會刪除資料夾。否則,它將丟擲IllegalStateException異常。如果recurse為true,則會刪除子資料夾。 |
| abstract boolean renameTo(Folder f) | 這將更改此資料夾的名稱。必須關閉資料夾才能重新命名。否則,將丟擲 IllegalStateException 異常。 |
管理資料夾中的郵件
以下是幫助管理資料夾中郵件的一些方法:
| 方法 | 描述 |
|---|---|
| abstract void appendMessages(Message[] messages) | 顧名思義,陣列中的郵件將放在此資料夾的末尾。 |
| void copyMessages(Message[] messages, Folder destination) | 這會將郵件從此資料夾複製到指定為引數的資料夾中。 |
| abstract Message[] expunge() | 要從資料夾中刪除郵件,請將其 Flags.Flag.DELETED 標誌設定為 true。要從資料夾中物理刪除已刪除的郵件,您必須呼叫此方法。 |
列出資料夾的內容
有四種方法可以列出資料夾包含的資料夾:
| 方法 | 描述 |
|---|---|
| Folder[] list() | 這將返回一個數組,其中列出了此資料夾包含的資料夾。 |
| Folder[] listSubscribed() | 這將返回一個數組,其中列出了此資料夾包含的所有已訂閱的資料夾。 |
| abstract Folder[] list(String pattern) | 這類似於list()方法,只不過它允許您指定一個模式。該模式是一個字串,用於指定與之匹配的資料夾的名稱。 |
| Folder[] listSubscribed(String pattern) | 這類似於listSubscribed()方法,只不過它允許您指定一個模式。該模式是一個字串,用於指定與之匹配的資料夾的名稱。 |
檢查郵件
| 方法 | 描述 |
|---|---|
| abstract int getMessageCount() | 此方法可以在開啟或關閉的資料夾上呼叫。但是,對於關閉的資料夾,此方法可能會(也可能不會)返回 -1,以指示郵件的確切數量不容易獲得。 |
| abstract boolean hasNewMessages() | 自從上次開啟資料夾以來,如果向資料夾中添加了新郵件,則此方法返回true。 |
| int getNewMessageCount() | 它透過檢查資料夾中設定了 RECENT 標誌的郵件來返回新的郵件計數。 |
| int getUnreadMessageCount() | 這可以在開啟或關閉的資料夾上呼叫。但是,對於關閉的資料夾,它可能會返回 -1,以指示獲取真實答案的成本太高。 |
從資料夾中獲取郵件
Folder 類提供了四種方法來從開啟的資料夾中檢索郵件:
| 方法 | 描述 |
|---|---|
| abstract Message getMessage(int messageNumber) | 這將返回資料夾中的第 n 條郵件。資料夾中的第一條郵件編號為 1。 |
| Message[] getMessages() | 這將返回一個Message物件陣列,表示此資料夾中的所有郵件。 |
| Message[] getMessages(int start, int end) | 這將返回資料夾中從 start 開始到 end 結束(包含 start 和 end)的Message物件陣列。 |
| Message[] getMessages(int[] messageNumbers) | 這將返回一個數組,其中僅包含messageNumbers陣列中按編號特別標識的郵件。 |
| void fetch(Message[] messages, FetchProfile fp) | 預取給定郵件中 FetchProfile 中指定的專案。FetchProfile 引數指定要預取郵件中的哪些標頭。 |
搜尋資料夾
如果伺服器支援搜尋(許多 IMAP 伺服器支援,而大多數 POP 伺服器不支援),則可以輕鬆地搜尋滿足特定條件的郵件的資料夾。這些條件編碼在 SearchTerm 物件中。以下是兩種搜尋方法:
| 方法 | 描述 |
|---|---|
| Message[] search(SearchTerm term) | 搜尋此資料夾中與指定的搜尋條件匹配的郵件。返回一個包含匹配郵件的陣列。如果未找到匹配項,則返回一個空陣列。 |
| Message[] search(SearchTerm term, Message[] messages) | 搜尋給定的郵件陣列中與指定搜尋條件匹配的郵件。返回一個包含匹配郵件的陣列。如果未找到匹配項,則返回一個空陣列。指定的 Message 物件必須屬於此資料夾。 |
標誌
當您需要更改資料夾中整套郵件的標誌時,標誌修改非常有用。以下是 Folder 類中提供的方法:
| 方法 | 描述 |
|---|---|
| void setFlags(Message[] messages, Flags flag, boolean value) | 設定陣列中指定的郵件的指定標誌。 |
| void setFlags(int start, int end, Flags flag, boolean value) | 設定編號從 start 到 end(包含 start 和 end)的郵件的指定標誌。 |
| void setFlags(int[] messageNumbers, Flags flag, boolean value) | 設定郵件號位於陣列中的郵件的指定標誌。 |
| abstract Flags getPermanentFlags() | 返回此資料夾支援的所有郵件的標誌。 |
廣告