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 }