JavaMail API - Quản lý thư mục
Cho đến nay, chúng tôi đã làm việc trong các chương trước của chúng tôi chủ yếu với thư mục INBOX. Đây là thư mục mặc định chứa hầu hết các thư. Một số hệ thống có thể gọi nó là INBOX và một số hệ thống khác có thể gọi nó bằng một số tên khác. Tuy nhiên, bạn luôn có thể truy cập nó từ JavaMail API bằng cách sử dụng tên INBOX.
API JavaMail đại diện cho các thư mục dưới dạng các phiên bản của lớp Thư mục trừu tượng:
public abstract class Folder extends Object
Lớp này khai báo các phương thức để yêu cầu các thư mục được đặt tên từ máy chủ, xóa thư khỏi thư mục, tìm kiếm thư cụ thể trong thư mục, liệt kê thư trong một thư mục, v.v.
Mở một thư mục
Chúng tôi không thể tạo một thư mục trực tiếp vì hàm tạo duy nhất trong lớp Thư mục được bảo vệ . Chúng tôi có thể lấy một Thư mục từ:
một phiên
một cửa hàng
hoặc một Thư mục khác
Tất cả các lớp trên đều có một phương thức getFolder () tương tự với chữ ký tương tự:
public abstract Folder getFolder(String name) throws MessagingException
Một số phương pháp giúp lấy đối tượng Thư mục là:
phương pháp | Sự miêu tả |
---|---|
boolean tồn tại () | Kiểm tra xem thư mục có thực sự tồn tại hay không. Sử dụng phương pháp này trước khi lấy đối tượng Thư mục. |
void mở trừu tượng (int mode) | Khi bạn nhận được một Thư mục , nó sẽ đóng lại. Sử dụng phương pháp này để mở nó. chế độ có thể là Folder.READ_ONLY hoặc Folder.READ_WRITE. |
trừu tượng boolean isOpen () | Phương thức này trả về true nếu thư mục đang mở, false nếu nó bị đóng |
trừu tượng void close (boolean expunge) | Đóng thư mục. Nếu đối số xóa là đúng , mọi thư đã xóa trong thư mục sẽ bị xóa khỏi tệp thực trên máy chủ. Nếu không, chúng chỉ được đánh dấu là đã xóa , nhưng các tin nhắn vẫn có thể bị xóa. |
Thông tin thư mục cơ bản
Sau đây là một số phương thức trong lớp Thư mục trả về thông tin cơ bản về một thư mục:
phương pháp | Sự miêu tả |
---|---|
trừu tượng String getName () | Trả về tên của thư mục, chẳng hạn như "TutorialsPoint Mail" |
trừu tượng String getFullName () | Trả về tên phân cấp đầy đủ từ gốc chẳng hạn như “books / Manisha / TutorialsPoint Mail”. |
URLName getURLName () | Trả về URLName đại diện cho thư mục này. |
Thư mục trừu tượng getParent () | Trả về tên của thư mục chứa thư mục này tức là thư mục mẹ. Ví dụ: "Manisha" từ ví dụ "TutorialsPoint Mail" trước đó. |
trừu tượng int getType () | Trả về một int cho biết liệu thư mục có thể chứa thư và / hoặc các thư mục khác hay không. |
int getMode () | Nó trả về một trong hai hằng số được đặt tên là Folder.READ_ONLY hoặc Folder.READ_WRITE hoặc -1 khi chế độ không xác định. |
Cửa hàng getStore () | Trả về đối tượng Store mà từ đó thư mục này được truy xuất. |
trừu tượng char getSeparator () | Trả về ký tự dấu phân tách phân tách tên đường dẫn của Thư mục này với tên của các thư mục con ngay lập tức. |
Quản lý Thư mục
Sau đây là một số phương pháp giúp quản lý Thư mục:
phương pháp | Sự miêu tả |
---|---|
trừu tượng boolean tạo (kiểu int) | Thao tác này sẽ tạo một thư mục mới trong Cửa hàng của thư mục này. Ở đâu loại sẽ là: Thư mục.HOLDS_MESSAGES hoặc Thư mục.HOLDS_FOLDERS. Trả về true nếu thư mục được tạo thành công, ngược lại trả về false . |
boolean xóa trừu tượng (boolean recurse) | Thao tác này chỉ xóa thư mục nếu thư mục bị đóng. Nếu không, nó sẽ ném ra một IllegalStateException . Nếu đệ quy là true , thì các thư mục con sẽ bị xóa. |
trừu tượng boolean renameTo (Thư mục f) | Điều này thay đổi tên của thư mục này. Một thư mục phải được đóng lại để được đổi tên. Nếu không, IllegalStateException sẽ được ném ra. |
Quản lý tin nhắn trong thư mục
Sau đây là một số phương pháp giúp quản lý thư trong Thư mục:
phương pháp | Sự miêu tả |
---|---|
trừu tượng void appendMessages (Message [] tin nhắn) | Như tên của nó, các thư trong mảng được đặt ở cuối thư mục này. |
void copyMessages (Tin nhắn [] tin nhắn, Đích thư mục) | Thao tác này sao chép các thư từ thư mục này vào một thư mục cụ thể được cung cấp dưới dạng đối số. |
Thông điệp trừu tượng [] expunge () | Để xóa thư khỏi một thư mục, hãy đặt cờ Flags.Flag.DELETED của thư đó thành true. Để loại bỏ vật lý các tin nhắn đã xóa khỏi một thư mục, bạn phải gọi phương thức này. |
Liệt kê nội dung của một thư mục
Có bốn phương pháp để liệt kê các thư mục chứa một thư mục:
phương pháp | Sự miêu tả |
---|---|
Danh sách thư mục [] () | Điều này trả về một mảng liệt kê các thư mục mà thư mục này chứa. |
Folder [] listSubscribe () | Điều này trả về một mảng liệt kê tất cả các thư mục đã đăng ký mà thư mục này chứa. |
danh sách Thư mục trừu tượng [] (Mẫu chuỗi) | Điều này tương tự với phương thức list () ngoại trừ nó cho phép bạn chỉ định một mẫu. Mẫu là một chuỗi cho biết tên của các thư mục phù hợp. |
Folder [] listSubscribe (Mẫu chuỗi) | Điều này tương tự với phương thức listSubscribe () ngoại trừ nó cho phép bạn chỉ định một mẫu. Mẫu là một chuỗi cho biết tên của các thư mục phù hợp. |
Kiểm tra thư
phương pháp | Sự miêu tả |
---|---|
trừu tượng int getMessageCount () | Phương thức này có thể được gọi trên một thư mục mở hoặc đóng. Tuy nhiên, trong trường hợp một thư mục đóng, phương thức này có thể (hoặc không) trả về -1 để chỉ ra rằng không dễ dàng có được số lượng thư chính xác. |
trừu tượng boolean hasNewMessages () | Điều này trả về true nếu thư mới đã được thêm vào thư mục kể từ lần cuối cùng nó được mở. |
int getNewMessageCount () | Nó trả về số lượng tin nhắn mới bằng cách kiểm tra các tin nhắn trong thư mục có cờ GẦN ĐÂY được đặt. |
int getUnreadMessageCount () | Điều này có thể được gọi trên một thư mục mở hoặc đóng. Tuy nhiên, trong trường hợp một thư mục đóng, nó có thể trả về -1 để chỉ ra rằng câu trả lời thực sẽ quá đắt để có được. |
Nhận tin nhắn từ thư mục
Lớp Thư mục cung cấp bốn phương pháp để lấy thư từ các thư mục đang mở:
phương pháp | Sự miêu tả |
---|---|
Thông điệp trừu tượng getMessage (int messageNumber) | Điều này trả về thư thứ n trong thư mục. Tin nhắn đầu tiên trong thư mục là số 1. |
Message [] getMessages () | Điều này trả về một mảng các đối tượng Thông báo đại diện cho tất cả các thư trong thư mục này. |
Message [] getMessages (int start, int end) | Điều này trả về một mảng các đối tượng Message từ thư mục, bắt đầu bằng bắt đầu và kết thúc bằng kết thúc, bao gồm. |
Message [] getMessages (int [] messageNumbers) | Điều này trả về một mảng chỉ chứa những thông báo được xác định cụ thể bằng số trong mảng messageNumbers . |
void fetch (Message [] messages, FetchProfile fp) | Tìm nạp trước các mục được chỉ định trong FetchProfile cho các Tin nhắn đã cho. Đối số FetchProfile chỉ định tiêu đề nào trong thư cần tìm nạp trước. |
Tìm kiếm thư mục
Nếu máy chủ hỗ trợ tìm kiếm (như nhiều máy chủ IMAP và hầu hết các máy chủ POP thì không), thật dễ dàng để tìm kiếm thư mục cho các thư đáp ứng các tiêu chí nhất định. Các tiêu chí được mã hóa trong các đối tượng SearchTerm. Sau đây là hai phương pháp tìm kiếm:
phương pháp | Sự miêu tả |
---|---|
Tin nhắn [] tìm kiếm (cụm từ SearchTerm) | Tìm kiếm trong Thư mục này cho các thư phù hợp với tiêu chí tìm kiếm đã chỉ định. Trả về một mảng chứa các thông báo phù hợp. Trả về một mảng trống nếu không tìm thấy kết quả phù hợp nào. |
Tìm kiếm trong Message [] (cụm từ SearchTerm, tin nhắn trong Message []) | Tìm kiếm mảng thông báo đã cho cho những thông báo phù hợp với tiêu chí tìm kiếm được chỉ định. Trả về một mảng chứa các thông báo phù hợp. Trả về một mảng trống nếu không tìm thấy kết quả phù hợp nào. Các đối tượng Message được chỉ định phải thuộc về thư mục này. |
Cờ
Sửa đổi cờ hữu ích khi bạn cần thay đổi cờ cho toàn bộ bộ thư trong Thư mục. Sau đây là các phương thức được cung cấp trong lớp Thư mục:
phương pháp | Sự miêu tả |
---|---|
void setFlags (Message [] tin nhắn, cờ Flags, giá trị boolean) | Đặt các cờ được chỉ định trên các thông báo được chỉ định trong mảng. |
void setFlags (int start, int end, Flags flag, boolean value) | Đặt các cờ được chỉ định trên các thư được đánh số từ đầu đến cuối, bao gồm cả đầu và cuối. |
void setFlags (int [] messageNumbers, Flags flag, boolean value) | Đặt các cờ được chỉ định trên các thông báo có số thông báo nằm trong mảng. |
Cờ trừu tượng getPermanentFlags () | Trả về các cờ mà thư mục này hỗ trợ cho tất cả các thư. |