StackOverflow 帮助了我很多,所以想发布这个来节省我调试它的时间:
我正在使用 Java 应用程序通过 IMAP/SSL 检索邮件。好几个月。现在来自雅虎的特定消息出现问题。该消息是多部分/替代的,带有一个 base64 编码的 text/plain 部分和一个 base64 编码的 text/html 部分。
检索失败:
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 的 webmail 客户端,内容本身看起来很正常。查看我的应用程序在 HTML 部分中检索到的内容,我在 base64 编码的 text/html 部分的末尾看到:
[...]
YWdlcy9iank1LzQ5NjViOGUyLTQxYjEtNGFhNi1iOGFhLTEzNGQwYjYxMWM5My5naWZ4IiAvPg0K
DQo8L2JvZHk+PC9odG1sPg==
<XHTML-STRIPONREPLY>
</XHTML-STRIPONREPLY>
这是雅虎最近开始添加到消息中的文本。它适用于未编码或使用带引号的可打印编码的文本,但会破坏 base64 编码的部分。
我向雅虎提交了一份报告,所以希望他们能尽快解决这个问题。