com.sun.mail.util.DecodingException:BASE64Decoder:从Yahoo检索邮件的编码流中出错

时间:2012-08-17 02:24:17

标签: email base64 javamail yahoo ioexception

我已经得到了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编码的部分。

我向雅虎提交了一份报告,希望他们能尽快解决这个问题。

1 个答案:

答案 0 :(得分:1)

尝试使用以下设置属性:

properties.setProperty("mail.imaps.partialfetch", "false");