2012-04-21 3 views
0

mstorをWindowsで使用しているので、私はmboxストアに接続できます(SOのおかげで)。そして、私はメッセージポインタを読むことができるように見えるでしょう。これは、ストアを繰り返し実行するたびに正しい数のメッセージを繰り返し処理するためです。問題は、ヘッダーもコンテンツもロードされていないことです。何か案が?mstorがmboxファイルを読み込んでいますが、nullを返しています

はい、クラスパスに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 

答えて

0

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

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

既に別の解決策が見つかった場合は、忘れずに共有してください。誰も答えがなかったからといって、誰も同じ問題を抱えていたわけではありません! propertiesと呼ばれるPropertiesのインスタンスを作成した後

+0

なぜこれが機能し、なぜ必要なのですか?私はClojureコードからこれを使用していますが、それも私の問題を解決しました... –

+0

私はこれに取り組んで以来、長い時間を過ごしました...私はAPIのバグだったと思います。それがキャッシュされる前にある種のものだった。それがあなたのために働いた場合は、答えをupvote。 –

+0

上記の私の答えを参照して、それはあなたが言うことはかなりだった。キャッシュを無効にすると、最後にトリックがかかりました。 –

0

、キャッシュを無効にするには、次を使用します。

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

あなたがこれを行うには、もう一度試している場合、あなたは対象のアクセサメソッドを呼び出すことができるしているはずです、from、toなどのように、m.saveChanges()ハックに頼る必要はありません。

関連する問題