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.6 2005/02/05 10:40:02 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 *
52 * @param num メッセージ番号。1始まり。
53 * @return 指定されたメッセージ番号のReceivedMailインスタンス
54 * @throws MailException メール取得に失敗した場合
55 */
56 ReceivedMail getMail(int num) throws MailException;
57
58 /***
59 * 現在のフォルダにある全メールをReceivedMailに変換して返します。
60 *
61 * @param delete メール取得後にサーバからメールを削除する場合 true
62 * @return 現在のフォルダにある全メールのReceivedMailインスタンス
63 * @throws MailException メール取得に失敗した場合
64 */
65 ReceivedMail[] getMails(boolean delete) throws MailException;
66
67 /***
68 * 現在のフォルダにある指定されたメッセージ番号のメールを返します。
69 * メッセージ番号は1始まりです。
70 *
71 * @see javax.mail.Folder#getMessage(int)
72 * @param num メッセージ番号。1始まり。
73 * @return 指定された番号のMimeMessageインスタンス
74 * @throws MailException メール取得に失敗した場合
75 */
76 MimeMessage getMessage(int num) throws MailException;
77
78 /***
79 * 現在のフォルダにある全メールを返します。
80 *
81 * @param delete メール取得後にサーバからメールを削除する場合 true
82 * @return 現在のフォルダにある全メールのMimeMessageインスタンス
83 * @throws MailException メール取得に失敗した場合
84 */
85 MimeMessage[] getMessages(boolean delete) throws MailException;
86
87 /***
88 * 指定された名前のフォルダに移動します。
89 * フォルダ名は"INBOX/XXXX"のように、INBOXからのパス指定します。
90 * <p>
91 * <strong>注:</strong> このメソッドは、メールサーバがimapサーバの時にのみ使用可能です。
92 *
93 * @param folderName 移動先のフォルダ名
94 * @throws MailException
95 */
96 void changeFolder(String folderName) throws MailException;
97
98 /***
99 * メールサーバと接続しているかどうか判定します。
100 *
101 * @return 接続している場合 true
102 */
103 boolean isConnected();
104 }