次のコードを使用して、メッセージ オブジェクトの本文を読み取ります。
Object content = _message.getContent();
String body = null;
if (content instanceof String) {
body = (String) content;
} else if (content instanceof Multipart) {
Multipart multipart = (Multipart) content;
BodyPart part = multipart.getBodyPart(0);
body = (String) part.getContent();
}
コンテンツがマルチパートの場合、すべて正常に動作しますが、コンテンツが単なるテキスト/プレーンの場合、次の例外が発生します (1 行目の getContent() 呼び出しで既に!):
13.01.2011 17:22:23 org.zkoss.zk.ui.impl.UiEngineImpl handleError:1253
SCHWERWIEGEND: >>org.zkoss.zk.ui.UiException: java.io.IOException
java.io.IOException
at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:108)
at com.sun.mail.handlers.text_plain.getContent(text_plain.java:90)
at javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:775)
at javax.activation.DataHandler.getContent(DataHandler.java:522)
at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1396)
JavaMail FAQ に示されているコードも試しました: http://www.oracle.com/technetwork/java/faq-135477.html#mainbody
同じ結果です。
メッセージは IMAPFolder インスタンスで getMessages(n) を呼び出すことによって取得されました。フォルダー インスタンスは、IMAPStore オブジェクトから取得されます。
何がうまくいかないのか、私は完全にアイデアがありません...誰かアイデアがありますか?