我使用imaps在java中实现了一个电子邮件客户端。我已经编写了标准的递归<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<script type="text/javascript" src="test_1.js"></script>
<script type="text/javascript" src="test_2.js"></script>
</head>
<body>
<h1>Ready!</h1>
<!-- YOUR HTML CODE -->
<script type="text/javascript">
var
tags = document.getElementsByTagName('script');
for (var i in tags) {
/*
apply data-cfasync only for
<script> tags with src attribute
*/
if (tags[i].getAttribute('src')) {
tags[i].setAttribute('data-cfasync', false);
}
}
</script>
</body>
</html>
和getText()
方法。
我的代码按预期工作。我遇到的唯一问题是接收转发的电子邮件(如.eml)。我以递归方式检索附加的电子邮件,查找getAttachments()
类型的正文部分。此邮件的内容为IMAPNestedMessage。我将NestedMessage视为一条消息,试图获取它的标题,文本和附件。检索标题是正确的,但是当为文本或InputStream正文部分调用message/rfc822
时,该方法返回错误的内容。更具体地说,它返回正确的字节数,但从它应该的位置开始,包含一些标题部分。
我通过打印整个邮件以及每个文本/附件正文部分内容对其进行了测试。这些部分的内容始终比预期内容高50-100个字符。收到的文字内容示例:
ding:7bit Hello World ------ = _ Part_938426_687455718.1462780017359
在保存文件时,我得到以下一个例外:
DecodingException:BASE64Decoder:编码流中的错误:需要4 有效的base64字符,但在EOF之前只有3个,最近的10个 人物是:&#34; nt-Transfe&#34;
DecodingException:BASE64Decoder:编码流中的错误:需要4 有效的base64字符,但在EOF之前只有3个,最近的10个 人物是:&#34; CA0OCAwIFI&#34;
我在多个imap服务器上测试了这个,似乎唯一的问题是在gmail上。从其他服务器中成功检索内容。
DEBUG LOG:
getContent()
gmail客户端正确显示这些电子邮件。这个问题是否有任何已知的解决方法?