使用imaps google解析java邮件中的eml附件的问题

时间:2016-05-01 09:28:08

标签: java gmail javamail imap

我使用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客户端正确显示这些电子邮件。这个问题是否有任何已知的解决方法?

0 个答案:

没有答案