1

誰でも経験がありJavamail javax.mail.FolderClosedExceptionますか?

私の問題は、いくつかのメールを読みたいのですが、すべて問題ありません。Messageしかし、オブジェクトのみを取得する、より技術的なクラスにリーダー クラスを変更しました。

2 番目のステップでは、豆を作りたいと思います。件名などの情報を取得するのは非常に簡単です。

public void getMail(Message msg) {
   subject = msg.getSubject();
   ...
}

ここでの主な問題:msg.getContent開かれたフォルダーが必要です... しかし、私のテクニカル リーダー クラスはすべてのメッセージ オブジェクトを取得し、フォルダーを閉じます... その後、私のビジネス メソッドgetMailmsg.getContent

ビジネスクラスとテクニカルクラスでそのようにすることは可能ですか、それともテクニカルクラスでメールビーンズをセットアップしてそれらのリストを返す必要がありますか?!

4

2 に答える 2

3

あなたの問題はgetContent()、サーバーからコンテンツをロードするようです.JavaMail実装は通常、実際に必要なときに、要求された情報を最初にダウンロードし始めますgetContent().

ビジネス コードにデータを渡す前に、すべてを完全にダウンロードするよう強制することもできます。したがって、技術クラスから取得したメッセージ オブジェクトを直接渡す代わりに、それらのコピーを作成できます。これにより、IMAP 接続などを使用してメッセージを完全にダウンロードする JavaMail クラスが強制されます。

/* assuming you retrieved 'message' from your folder object */
Message copyOfMessage = new MimeMessage( (MimeMessage) message );
[..]
folder.close();
[..]
yourBusinessObject.getMail( copyOfMessage );

しかし、フォルダーを閉じた、コピーされたオブジェクトにアクセスしようとしたことは一度もありません。また、これをPOP3で使用したことはありません。しかし、私はそれを試してみます。

于 2012-01-12T15:53:10.817 に答える
1

Messageインスタンスの代わりに、必要なものを渡すだけではどうですか? お気に入り

public void getMail(String subject, Object content, ...) {
   ...
}

もちろん、以前ほどきれいではありませんが、うまくいくかもしれません ;)

PS: Für d'IPA, または hesch die dure?

于 2011-03-22T12:58:24.950 に答える