1

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 编码的部分。

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

4

1 回答 1

1

尝试设置您的属性:

properties.setProperty("mail.imaps.partialfetch", "false");
于 2013-05-10T18:29:10.773 回答