我已经得到了StackOverflow的大力帮助,所以想发布这个以节省其他人调试它的时间:
我正在使用Java应用程序通过IMAP / SSL检索邮件。很好几个月。现在来自雅虎的特定消息出现问题。消息是multipart / alternative,带有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编码的部分。
我向雅虎提交了一份报告,希望他们能尽快解决这个问题。
答案 0 :(得分:1)
尝试使用以下设置属性:
properties.setProperty("mail.imaps.partialfetch", "false");