7

Java を使用して Gmail の検索を実行しようとしています。JavaMail を使用すると、次のようにメッセージ検索でメッセージを実行できます。

Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "myUsername", "myPassword");

Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);

SearchTerm term = new SearchTerm() {
  @Override
  public boolean match(Message mess) {
    try {
      return mess.getContent().toString().toLowerCase().indexOf("boston") != -1;
    } catch (IOException ex) {
      Logger.getLogger(JavaMailTest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (MessagingException ex) {
      Logger.getLogger(JavaMailTest.class.getName()).log(Level.SEVERE, null, ex);
    }
    return false;
  }
};

Message[] searchResults = inbox.search(term);
for(Message m:searchResults)
  System.out.println("MATCHED: " + m.getFrom()[0]);

ただし、これには各メッセージをダウンロードする必要があります。もちろん、すべての結果をキャッシュすることはできますが、これは大きな Gmail ボックスのストレージの問題になり、非常に遅くなります (ギガバイトのテキストを検索するのにどれだけの時間がかかるか想像できます...)。

私の質問は、サーバー上のメールを検索する方法、la gmail の検索フィールドはありますか? おそらくMicrosoft Exchange経由でしょうか?

グーグルの時間は何も見つかりませんでした。

4

2 に答える 2

3

適切なIMAPコマンドを使用して、サーバーに検索を実行させることができます。SEARCHコマンドはこれまでのところしか取得できません。おそらく必要なのは、SORTコマンドです。SORTはJavaMailには実装されていませんが、ドキュメントには、SORTを自分で実装する方法が示されています。

http://java.sun.com/products/javamail/javadocs/com/sun/mail/imap/IMAPFolder.html#doCommand(com.sun.mail.imap.IMAPFolder.ProtocolCommand)

(括弧付きのURLにリンクする方法がわかりませんでした)

于 2010-03-09T01:50:50.420 に答える
0

Exchange IMAP ストアに接続して使用するjavax.mail.search.SearchTerm

于 2010-03-09T01:42:16.090 に答える