Java mimessage内容传输编码问题

Java mimessage内容传输编码问题,java,character-encoding,jakarta-mail,Java,Character Encoding,Jakarta Mail,大家好。。。 我希望有人能告诉我一些关于我所面临问题的信息 阅读MimeMessage的getInputStream()的Javadoc,它说“返回此消息内容的解码输入流” 然而,这不是我所经历的。输出未解码。例如,如果我有一条消息,下面是 Date: Wed, 24 Feb 2010 11:29:13 +1100 From: xxxxxxxxx To: xxxxxxxxxxxx Message-ID: <4B8472D9.5050901@xxxxxxxxx> Subject: xx

大家好。。。 我希望有人能告诉我一些关于我所面临问题的信息

阅读MimeMessage的getInputStream()的Javadoc,它说“返回此消息内容的解码输入流” 然而,这不是我所经历的。输出未解码。例如,如果我有一条消息,下面是

Date: Wed, 24 Feb 2010 11:29:13 +1100
From: xxxxxxxxx
To: xxxxxxxxxxxx
Message-ID: <4B8472D9.5050901@xxxxxxxxx>
Subject: xxxxxxxxxxxxxxxxxx
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="------------000801030004000206000901"
Content-Transfer-Encoding: quoted-printable
Organization: xxxxxxxxxxxxxxxxxx
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)

This is a multi-part message in MIME format.
--------------000801030004000206000901
Content-Type: text/plain; charset=3DISO-8859-1; format=3Dflowed
Content-Transfer-Encoding: 7bit

!

--------------000801030004000206000901
Content-Type: text/plain;
 name=3D"bla.bla"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline;
filename=3D"bla.bla"

 my.username =3D holly
my.host =3D molly
--------------000801030004000206000901--
日期:2010年2月24日星期三11:29:13+1100
发件人:XXXXXXXX
收件人:XXXXXXXXXX
消息ID:
主题:XXXXXXXXXXXXXXXX
MIME版本:1.0
内容类型:多部分/混合;
边界=“-----------0008010300004000206000901”
内容传输编码:引用可打印
组织机构:XXXXXXXXXXXXXXXX
用户代理:Thunderbird 2.0.0.23(Windows/20090812)
这是MIME格式的多部分消息。
--------------000801030004000206000901
内容类型:文本/纯文本;字符集=3DISO-8859-1;格式=3Dflowed
内容传输编码:7bit
!
--------------000801030004000206000901
内容类型:文本/纯文本;
名称=3D“bla.bla”
内容传输编码:8比特
内容配置:内联;
filename=3D“bla.bla”
my.username=3D holly
my.host=3D莫莉
--------------000801030004000206000901--
然后,假设我有一个用上述内容构造的名为“m”的对象,然后调用m.getInputStream()并将输出转储到屏幕上,显示那些“=3D”字符集。 我做错了什么


如果我使用QPDecoderStream对m.getInputStream()的输出进行解码,那么结果当然是正确的。但是,它没有达到目的,因为Javadoc说getInputStream()返回一个解码的输入流。

这里的问题是消息格式不正确:

如果内容传输编码标题字段显示为 消息头,它应用于该消息的整个正文。如果 内容传输编码标题字段显示为实体名称的一部分 标题,它仅适用于该实体的主体。如果一个实体是 不允许使用“multipart”类型的内容传输编码 具有除“7位”、“8位”或“二进制”以外的任何值


您可能会获得顶级的
MimeMessage
解码内容流,并从中实例化一个
MimeMultipart
,但这只是绕过了一条中断消息的基本问题。

非常感谢。这就解释了为什么它一直如此。