Java プロジェクトで、gmail サーバーからメールを受信できます。でも本体のパッケージ部分を受け取りたい。このコード サンプルでは、最後message(messages.length - 1)
に multipart/mixed を使用しています。
デバッグはブロックに渡されif
ますが、キャッチ ブロックに分類され、次のメッセージが表示されます。
スレッド「メイン」の例外 java.lang.ClassCastException: com.sun.mail.imap.IMAPInputStream を javax.mail.Multipart にキャストできません
この問題をどのように処理できますか?
Message[] messages = folder.getMessages();
ArrayList<String> attachments = new ArrayList<String>();
for (int i = messages.length - 1; i >= 0; i--) {
Part p = messages[i];
if (messages[i].isMimeType("multipart/*"))
{
***Multipart multipart = (Multipart) messages[i].getContent();***
for (int j = 0, m = multipart.getCount(); j < m; j++) {
Part part = multipart.getBodyPart(j);
String disposition = part.getDisposition();
//
if (disposition != null
&& (disposition.equals("ATTACHMENT")))
{
System.out.println(part.getFileName());
attachments.add(saveFile(MimeUtility.decodeText(part.getFileName()), part.getInputStream()));
}
}
}
}
編集
Java Projectのみを使用している mail.jar、 additional.jar 、および activation.jar の使用に関する問題を修正しました。
(以前、Android プロジェクト用にこれらの jar をダウンロードしていました。それが問題の原因でした。)