JavaMail で検索する方法について何かが欠けていると思います。
- フォルダーから空のメッセージをダウンロードする
- 結果に一致する新しい SearchTerm を作成します
- 検索語を使用して結果をフィルタリング (yourFolder.search) します。
これは機能します。しかし、なぜこのようにするのですか?gmail などに接続するために javamail を使用している場合、検索はサーバー側で実行されていません。効率化またはネットワーク経由で送信する必要があるデータ量の削減...
サーバー側で検索を実行し、一致のリストを返す方法がわかりません。何か案は?
編集: サーバー側で検索を実行しない、現在行っていることの疑似コードを含めます。これをSearchTermを使用するように変換したとしても、サーバー側では何も実行されませんよね?
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "gimaps");
final Session session = Session.getDefaultInstance(props, null);
final GmailSSLStore store = (GmailSSLStore) session.getStore("gimaps");
store.connect(ADDRESS, PASSWORD);
final GmailFolder allMailFolder = (GmailFolder) store.getFolder("[Gmail]/All Mail");
allMailFolder.open(Folder.READ_ONLY);
final Message[] allMessages = allMailFolder.getMessages();
System.out.println("Messages:" + allMessages.length);
FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
allMailFolder.fetch(allMessages, fp);
for (final Message message : allMessages) {
final Address[] addrs = message.getFrom();
if (addrs != null) {
for (final Address addr : addrs) {
if (addr.toString().toLowerCase().contains("george")) {
System.out.println(addr.toString());
}
}
}
}