Проблема MimeMessage Content-Transfer-Encoding - PullRequest
1 голос
/ 31 марта 2011

Приветствую всех ... Я надеюсь, что кто-нибудь сможет пролить мне свет на проблему, с которой я столкнулся.

Считывая Javadoc из getInputStream () MimeMessage, он говорит "Вернуть декодированный поток вводадля содержания этого сообщения"Однако, это не то, что я испытываю.Вывод не декодируется.Например, если у меня есть сообщение a

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--

Затем, если предположить, что у меня есть объект с именем 'm', созданный с указанным выше содержимым, тогда вызывается m.getInputStream () и выводится вывод вна экране отображаются эти '= 3D' кодировки.Что я сделал не так?

Если я использовал QPDecoderStream для декодирования вывода m.getInputStream (), тогда, конечно, результат будет правильным.Тем не менее, это побеждает цель, потому что Javadoc говорит, что getInputStream () возвращает декодированный входной поток.

1 Ответ

2 голосов
/ 31 марта 2011

Проблема в том, что сообщение искажено. Вам не разрешено устанавливать Content-Transfer-Encoding на quoted-printable для составной части :

Если поле заголовка Content-Transfer-Encoding отображается как часть заголовок сообщения, он применяется ко всему телу этого сообщения. Если Поле заголовка Content-Transfer-Encoding появляется как часть объекта заголовки, это относится только к телу этой сущности. Если объект типа "multipart", Content-Transfer-Encoding не разрешено иметь любое значение, кроме "7bit", "8bit" или "binary".

Вероятно, вы могли бы получить декодированный поток контента верхнего уровня MimeMessage и создать из него MimeMultipart, но это всего лишь хакерство вокруг фундаментальной проблемы разбитого сообщения.

...