| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > javamail getcontent |
| Автор: njoymsk 7.2.2012, 14:47 |
| Привет. Такая ошибка. Забираю сообщение с сервера. При выполнении кода String contentType = message.getContent(); Получаю multipart/alternative Мне нужно получить текст сообщения. Выполняю код MimeMessage mimeMessage = (MimeMessage) message.getContent(); Получаю ошибку: javax.mail.util.SharedByteArrayInputStream cannot be cast to javax.mail.Multipart Но могу сообщение записать в файл методом writeto (см.файл) Какие варианты обойти ошибку и получить содержимое? Парсить руками совсем не хотелось бы. Спасибо если вы прониклись моей проблемой, готов ответить на все вопросы. Использую javamail 1.4.4 |
| Автор: mstalker26 7.2.2012, 15:56 | ||||
проблемой прониклись
Попробуйте считать методом getInputStream() http://javamail.kenai.com/nonav/javadocs/javax/mail/Part.html#getInputStream(). Пример (на скорую руку)
|
| Автор: njoymsk 7.2.2012, 16:12 |
| Спасибо за сочувствие) Метод getInputStream() я пробовал и все работает. Получаю все символы сообщения (смотреть вложенный файл к первому посту), в том числе и заголовки, кодировки, тегиб, id. В общем информация вроде в структурированном виде, но инструмент для создания объекта из этих данных не работает((. Вопрос, наверно, больше заключается, вот в чем: Как разобрать полученное сообщение, а именно, его пользовательский текст, если к формату Mime оно не приводится из за ошибки (в первом посте)? |
| Автор: mstalker26 7.2.2012, 19:02 | ||||
если у Вас тип multipart/alternative, кастуйте не к MimeMessage, а к Multipart. Пример (приблизительно)
|
| Автор: njoymsk 8.2.2012, 10:42 | ||||
Проблема в том что и на этой строчке
я получаю ошибку: javax.mail.util.SharedByteArrayInputStream cannot be cast to javax.mail.Multipart Таким образом есть возможность преобразовать письмо в текст из InputStream, но как парсить его руками я не представляю. А получить какой то структурированный объект я не могу( Пока обошелся заголовком сообщения
Для текущих нужд его вроде бы пока хватает.. |
| Автор: jk1 8.2.2012, 11:27 | ||
Документация к getContent довольно однозначна в этом вопросе
То есть тип возвращаемого значения зависит от типа контента. Про "multipart/alternative" уже писалось выше, но судя по тому, что возвращается поток, это не Ваш случай. Начните с выяснения Mime-типа содержимого, тогда сразу станет ясно, как его читать. |
| Автор: BrykAlien 5.5.2017, 10:56 | ||
| Понятно что занимаюсь эксгумацией старой темы, но её яндех выдаёт одной из первых при запросе. А ответа нет. Мне помогла замена всех .jar - файлов Javamail API на версию 1.6.0-rc1: javax.mail.jar : https://maven.java.net/content/repositories/releases/com/sun/mail/javax.mail/1.6.0-rc1/javax.mail-1.6.0-rc1.jar activation.jar : https://maven.java.net/content/repositories/releases/com/sun/mail/android-activation/1.6.0-rc1/android-activation-1.6.0-rc1.jar Так же есть описание проблемы http://www.oracle.com/technetwork/java/javamail/faq/index.html#castmultipart
|