0

Windows で mstor を使用すると、mbox ストアに接続できます (SO のおかげです)。そして、メッセージ ポインターを読み取ることができるようです。これを知っているのは、ストアを反復処理するたびに、適切な数のメッセージを反復処理するためです。問題は、ヘッダーもコンテンツもロードされていないことです! 何か案が?

はい、クラスパスにJavaMailのものがあります(最近はmstorのlibに含まれています)。また、mstor のサンプル ファイル (imagined.mbox) の 1 つでも使用しています。

前もって感謝します。

私のコード:

public static void main(String[] args) throws Exception {

  Properties props = new Properties();
  props.setProperty("mstor.mbox.metadataStrategy", "xml");
  Session session1 = Session.getDefaultInstance(props);

  Session session = Session.getDefaultInstance(new Properties());

  Store store = session.getStore(new URLName("mstor:C:/tmp/imagined.mbox"));
  store.connect();

  System.out.println(store.isConnected());

  Folder inbox = store.getDefaultFolder();  // no subfolder here; even if there is an Inbox, I get the same thing...
  inbox.open(Folder.READ_ONLY);

  Message[] messages = inbox.getMessages();
  for (Message m : messages) {
    System.out.println(m.getSubject());
  }

}

私の典型的な結果:

true (i.e., yes, I'm connected...)
null
null
null
null
4

2 に答える 2

0

Properties呼び出された のインスタンスを作成した後properties、次を使用してキャッシュを無効にします。

properties.setProperty("mstor.mbox.metadataStrategy", "none");

m.saveChanges()これを行って再試行すると、ハックに頼ることなく、subject、from、to などのアクセサー メソッドを呼び出すことができることがわかるはずです。

于 2014-11-28T17:04:23.020 に答える
0

これは1か月前のものですが、同じ問題に遭遇しました。m.saveChanges()for ループの最初の行として追加してみてください。これにより、mstor はメッセージのヘッダーのキャッシュを作成するように強制されます。

論理的には、上記のコードは正しいです。この行を追加しなければならなかったのは奇妙ですが、これは問題に対する機能的な回避策です。

すでに別の解決策を見つけた場合は、忘れずに共有してください。誰も答えを持っていなかったからといって、誰も同じ問題を抱えていたわけではありません!

于 2012-06-15T21:29:05.533 に答える