Мне очень помог StackOverflow, поэтому я хотел опубликовать это, чтобы сэкономить другим часы, которые я потратил на его отладку:
Я использую приложение Java для получения почты через IMAP/SSL. Ладно на месяцы. Теперь проблемы с конкретным сообщением от Yahoo. Сообщение состоит из нескольких частей/альтернативных частей, состоящих из текстовой/простой части в кодировке base64 и части text/html в кодировке base64.
Извлечение не удается с:
IOException: com.sun.mail.util.DecodingException: BASE64Decoder: Error in encoded stream: needed 4 valid base64 characters but only got 3 before EOF, the 10 most recent characters were: "IPONREPLY>" :[com.sun.mail.util.BASE64DecoderStream.decode(BASE64DecoderStream.java:256), com.sun.mail.util.BASE64DecoderStream.read(BASE64DecoderStream.java:110)...
Само содержимое выглядит нормально при использовании почтового клиента Yahoo. Глядя на то, что извлекает мое приложение в части HTML, я вижу в конце части text/html, закодированной в base64:
[...]
YWdlcy9iank1LzQ5NjViOGUyLTQxYjEtNGFhNi1iOGFhLTEzNGQwYjYxMWM5My5naWZ4IiAvPg0K
DQo8L2JvZHk+PC9odG1sPg==
<XHTML-STRIPONREPLY>
</XHTML-STRIPONREPLY>
Это текст, который Yahoo недавно начал добавлять в сообщения. Он работает с текстом, который не закодирован или использует кодировку для печати в кавычках, но разбивает части, закодированные в base64.
Я подал отчет в Yahoo, так что надеюсь, что они скоро это исправят.