Javamail-api-folder-management

提供:Dev Guides
移動先:案内検索

JavaMail API-フォルダー管理

これまで、前の章で主にINBOXフォルダーを使用してきました。 これは、ほとんどのメールが存在するデフォルトのフォルダーです。 一部のシステムはINBOXとして呼び出し、他のシステムは別の名前で呼び出します。 ただし、INBOXという名前を使用して、JavaMail APIからいつでもアクセスできます。

JavaMail APIは、抽象Folderクラスのインスタンスとしてフォルダーを表します。

public abstract class Folder extends Object

このクラスは、サーバーからの名前付きフォルダーの要求、フォルダーからのメッセージの削除、フォルダー内の特定のメッセージの検索、フォルダー内のメッセージのリストなどのメソッドを宣言します。

フォルダーを開く

_Folder_クラスの唯一のコンストラクターは_protected_であるため、フォルダーを直接作成することはできません。 _Folder_は次から取得できます。

  • セッション
  • 商店
  • または別のフォルダ

上記のすべてのクラスには、同様のシグネチャを持つ同様のgetFolder()メソッドがあります。

public abstract Folder getFolder(String name) throws MessagingException

_Folder_オブジェクトの取得に役立つメソッドの一部は次のとおりです。

Method Description
boolean exists() Checks if the folder really exists. Use this method before getting the Folder object.
abstract void open(int mode) When you get a Folder, its closed. Use this method to open it. mode can be Folder.READ_ONLY or Folder.READ_WRITE.
abstract boolean isOpen() This method returns true if the folder is open, false if it’s closed
abstract void close(boolean expunge) Closes the folder. If the expunge argument is true, any deleted messages in the folder are deleted from the actual file on the server. Otherwise, they’re simply marked as deleted, but the messages can still be undeleted.

基本的なフォルダー情報

以下は、フォルダーに関する基本情報を返すFolderクラスのメソッドの一部です。

Method Description
abstract String getName() Returns the name of the folder, such as "finddevguides Mail"
abstract String getFullName() Returns the complete hierarchical name from the root such as “books/Manisha/finddevguides Mail”.
URLName getURLName() Return a URLName representing this folder.
abstract Folder getParent() Returns the name of the folder that contains this folder i.e the parent folder. E.g "Manisha" from the previous "finddevguides Mail" example.
abstract int getType() Returns an int indicating whether the folder can contain messages and/or other folders.
int getMode() It returns one of the two named constants Folder.READ_ONLY or Folder.READ_WRITE or -1 when the mode is unknown.
Store getStore() Returns the Store object from which this folder was retrieved.
abstract char getSeparator() Return the delimiter character that separates this Folder’s pathname from the names of immediate subfolders.

フォルダーの管理

以下は、フォルダの管理に役立ついくつかの方法です。

Method Description
abstract boolean create(int type) This creates a new folder in this folder’s Store. Where type would be:Folder.HOLDS_MESSAGES or Folder.HOLDS_FOLDERS. Returns true if folder is successfully created else returns false.
abstract boolean delete(boolean recurse) This deletes the folder only if the folder is closed. Otherwise, it throws an IllegalStateException. If recurse is true, then subfolders are deleted.
abstract boolean renameTo(Folder f) This changes the name of this folder. A folder must be closed to be renamed. Otherwise, an IllegalStateException is thrown.

フォルダー内のメッセージの管理

以下は、フォルダ内のメッセージの管理に役立つメソッドの一部です。

Method Description
abstract void appendMessages(Message[] messages) As the name implies, the messages in the array are placed at the end of this folder.
void copyMessages(Message[] messages, Folder destination) This copies messages from this folder into a specified folder given as an argument.
abstract Message[] expunge() To delete a message from a folder, set its Flags.Flag.DELETED flag to true. To physically remove deleted messages from a folder, you have to call this method.

フォルダーの内容のリスト

フォルダーに含まれるフォルダーをリストするには、4つの方法があります。

Method Description
Folder[] list() This returns an array listing the folders that this folder contains.
Folder[] listSubscribed() This returns an array listing all the subscribed folders that this folder contains.
abstract Folder[] list(String pattern) This is similar to the list() method except that it allows you to specify a pattern. The pattern is a string giving the name of the folders that match.
Folder[] listSubscribed(String pattern) This is similar to the listSubscribed() method except that it allows you to specify a pattern. The pattern is a string giving the name of the folders that match.

メールの確認

Method Description
abstract int getMessageCount() This method can be invoked on an open or closed folder. However, in the case of a closed folder, this method may (or may not) return -1 to indicate that the exact number of messages isn’t easily available.
abstract boolean hasNewMessages() This returns true if new messages have been added to the folder since it was last opened.
int getNewMessageCount() It returns the new message count by checking messages in the folder whose RECENT flag is set.
int getUnreadMessageCount() This can be invoked on either an open or a closed folder. However, in the case of a closed folder, it may return -1 to indicate that the real answer would be too expensive to obtain.

フォルダーからメッセージを取得する

Folderクラスには、開いているフォルダーからメッセージを取得するための4つのメソッドがあります。

Method Description
abstract Message getMessage(int messageNumber) This returns the nth message in the folder. The first message in the folder is number 1.
Message[] getMessages() This returns an array of Message objects representing all the messages in this folder.
Message[] getMessages(int start, int end) This returns an array of Message objects from the folder, beginning with start and finishing with end, inclusive.
Message[] getMessages(int[] messageNumbers) This returns an array containing only those messages specifically identified by number in the messageNumbers array.
void fetch(Message[] messages, FetchProfile fp) Prefetch the items specified in the FetchProfile for the given Messages. The FetchProfile argument specifies which headers in the messages to prefetch.

フォルダーを検索する

サーバーが検索をサポートしている場合(多くのIMAPサーバーがサポートし、ほとんどのPOPサーバーがサポートしない場合)、特定の条件を満たすメッセージをフォルダーで簡単に検索できます。 条件はSearchTermオブジェクトにエンコードされます。 次の2つの検索方法があります。

Method Description
Message[] search(SearchTerm term) Search this Folder for messages matching the specified search criterion. Returns an array containing the matching messages. Returns an empty array if no matches were found.
Message[] search(SearchTerm term, Message[] messages) Search the given array of messages for those that match the specified search criterion. Returns an array containing the matching messages. Returns an empty array if no matches were found. The the specified Message objects must belong to this folder.

フラグ

フラグの変更は、フォルダ内のメッセージセット全体のフラグを変更する必要がある場合に便利です。 以下は、Folderクラスで提供されるメソッドです。

Method Description
void setFlags(Message[] messages, Flags flag, boolean value) Sets the specified flags on the messages specified in the array.
void setFlags(int start, int end, Flags flag, boolean value) Sets the specified flags on the messages numbered from start through end, both start and end inclusive.
void setFlags(int[] messageNumbers, Flags flag, boolean value) Sets the specified flags on the messages whose message numbers are in the array.
abstract Flags getPermanentFlags() Returns the flags that this folder supports for all messages.