View Javadoc

    1   package com.ozacc.mail.fetch;
    2
    3   import javax.mail.internet.MimeMessage;
    4
    5   import com.ozacc.mail.MailException;
    6
    7   /***
    8    * メールサーバからメールを取得する上級インターフェース。<br>
    9    * このインターフェースの実装クラスでメールサーバの情報を設定します。
    10   * <p>
    11   * <code>FetchMail</code>インターフェースと異なり、メール取得時に例外が発生しても、
    12   * メールサーバとの接続は切断されません。<code>finally</code>ブロックを使用するなりして
    13   * メールサーバとの接続を確実に切断できるようにすることを推奨します。
    14   * <p>
    15   * このインターフェース実装クラスのインスタンスは、メールサーバとの接続を保持するため、
    16   * スレッドセーフではありません。<br>
    17   * DIコンテナでの使用の際はシングルトンでインスタンスを取得しないように注意してください。
    18   *
    19   * @see FetchMail
    20   * @since 1.2
    21   * @author Tomohiro Otsuka
    22   * @version $Id: FetchMailPro.java,v 1.1.2.7 2005/04/10 05:22:24 otsuka Exp $
    23   */
    24  public interface FetchMailPro {
    25
    26  	/***
    27  	 * メールサーバに接続し、「INBOX」フォルダをオープンします。
    28  	 *
    29  	 * @throws MailException メールサーバとの接続に失敗した場合
    30  	 */
    31  	void connect() throws MailException;
    32
    33  	/***
    34  	 * メールサーバとの接続を切断します。接続されていなければ何も行いません。
    35  	 *
    36  	 * @throws MailException メールサーバとの接続切断に失敗した場合
    37  	 */
    38  	void disconnect() throws MailException;
    39
    40  	/***
    41  	 * 現在のフォルダに届いているメール数を返します。
    42  	 *
    43  	 * @return 現在のフォルダにあるメール数
    44  	 * @throws MailException
    45  	 */
    46  	int getMailCount() throws MailException;
    47
    48  	/***
    49  	 * 現在のフォルダにある指定されたメッセージ番号のメールをReceivedMailに変換して返します。
    50  	 * メッセージ番号は1始まりです。
    51  	 * <p>
    52  	 * メッセージはサーバから削除されません。
    53  	 *
    54  	 * @param num メッセージ番号。1始まり。
    55  	 * @return 指定されたメッセージ番号のReceivedMailインスタンス
    56  	 * @throws MailException メール取得に失敗した場合
    57  	 */
    58  	ReceivedMail getMail(int num) throws MailException;
    59
    60  	/***
    61  	 * 現在のフォルダにある指定されたメッセージ番号のメールをReceivedMailに変換して返します。
    62  	 * メッセージ番号は1始まりです。
    63  	 * 指定した番号のメッセージをサーバから削除するかどうかを指定できます。
    64  	 *
    65  	 * @param num メッセージ番号。1始まり。
    66  	 * @param delete 指定された番号のメッセージをサーバから削除する場合 true を指定
    67  	 * @return 指定されたメッセージ番号のReceivedMailインスタンス
    68  	 * @throws MailException メール取得に失敗した場合
    69  	 */
    70  	ReceivedMail getMail(int num, boolean delete) throws MailException;
    71
    72  	/***
    73  	 * 現在のフォルダにある全メールをReceivedMailに変換して返します。
    74  	 *
    75  	 * @param delete メール取得後にサーバからメールを削除する場合 true
    76  	 * @return 現在のフォルダにある全メールのReceivedMailインスタンス
    77  	 * @throws MailException メール取得に失敗した場合
    78  	 */
    79  	ReceivedMail[] getMails(boolean delete) throws MailException;
    80
    81  	/***
    82  	 * 現在のフォルダにある指定されたメッセージ番号のメールを返します。
    83  	 * メッセージ番号は1始まりです。
    84  	 *
    85  	 * @see javax.mail.Folder#getMessage(int)
    86  	 * @param num メッセージ番号。1始まり。
    87  	 * @return 指定された番号のMimeMessageインスタンス
    88  	 * @throws MailException メール取得に失敗した場合
    89  	 */
    90  	MimeMessage getMessage(int num) throws MailException;
    91
    92  	/***
    93  	 * 現在のフォルダにある全メールを返します。
    94  	 *
    95  	 * @param delete メール取得後にサーバからメールを削除する場合 true
    96  	 * @return 現在のフォルダにある全メールのMimeMessageインスタンス
    97  	 * @throws MailException メール取得に失敗した場合
    98  	 */
    99  	MimeMessage[] getMessages(boolean delete) throws MailException;
    100
    101 	/***
    102 	 * 指定された名前のフォルダに移動します。
    103 	 * フォルダ名は"INBOX/XXXX"のように、INBOXからのパス指定します。
    104 	 * <p>
    105 	 * <strong>注:</strong> このメソッドは、メールサーバがimapサーバの時にのみ使用可能です。
    106 	 *
    107 	 * @param folderName 移動先のフォルダ名
    108 	 * @throws MailException
    109 	 */
    110 	void changeFolder(String folderName) throws MailException;
    111
    112 	/***
    113 	 * メールサーバと接続しているかどうか判定します。
    114 	 *
    115 	 * @return 接続している場合 true
    116 	 */
    117 	boolean isConnected();
    118 }