Java 使用MimeBodyPart将XML电子邮件附件的内容作为字符串处理

Java 使用MimeBodyPart将XML电子邮件附件的内容作为字符串处理,java,xml,email,Java,Xml,Email,我正在尝试使用MimeBodyPart处理电子邮件附件(.xml) attachment = part.getContent(); 这将返回StreamSource类型的Java对象(而不是字符串) 如何将其转换为字符串。我正在使用BufferedReader和StringBuilder从InputStream重建字符串,但重建的字符串不完整 StringBuilder sb = new StringBuilder(); InputStream inputStr = attachment.ge

我正在尝试使用MimeBodyPart处理电子邮件附件(.xml)

attachment = part.getContent();
这将返回StreamSource类型的Java对象(而不是字符串)

如何将其转换为字符串。我正在使用BufferedReader和StringBuilder从InputStream重建字符串,但重建的字符串不完整

StringBuilder sb = new StringBuilder();
InputStream inputStr = attachment.getInputStream();
br = new BufferedReader(new InputStreamReader(inputStr));
while ((line = br.readLine()) != null) {
    sb.append(line);
   } 
如果我将电子邮件附件处理为.txt而不是.xml,那么MimeBodyPart.getContent()将以完整字符串的形式返回附件。当电子邮件附件是.xml时,我想要相同的功能


有什么想法吗?

尝试将“UTF-8”编码作为参数添加到InputStreamReader中

附件的字符编码是什么?在构建阅读器/流时,您可能需要考虑到这一点。谢谢您的回复。XML附件的字符编码为UTF-8。未返回预期字符串您是否100%确定发件人发送了完整的XML文档?发件人在标题中指定的内容类型是什么?是。发件人是我。我的电子邮件被监控,附件被提取并使用JMS处理。。这就是我尝试使用.txt和.xml文件扩展名的方式。xml中唯一的头是No,我指的是电子邮件头。我选中了,它是application/xml;contentType=part.getContentType()的名称=.xml