2011-03-30 3 views
1

안녕하세요. 나는 누군가 내가 갖고있는 문제에 대해 나에게 약간의 조명을 줄 수 있기를 바랍니다. MimeMessage의의는 getInputStream()의 자바 독을 읽기MimeMessage 콘텐츠 전송 인코딩 문제

, 그것은 는 "이 메시지의 내용 대한 디코드 된 입력 스트림을 돌려줍니다" 그러나, 이것이 내가 경험하고 무엇을하지 않습니다 말한다. 출력은 디코딩되지 않습니다. I가있는 경우 예를 들어, 메시지 A는 화면 방송 출력을 I는 'm'라는 목적은 상기 콘텐츠는 다음 m.getInputStream을 (호출로 구성된 것으로 가정) 및 덤프이어서

Date: Wed, 24 Feb 2010 11:29:13 +1100 
From: xxxxxxxxx 
To: xxxxxxxxxxxx 
Message-ID: <[email protected]> 
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-- 

이하 그 '= 3D'문자 세트. 내가 뭘 잘못 했니?

QPDecoderStream을 사용하여 m.getInputStream()의 출력을 디코딩하면 결과가 정확합니다. 그러나, Javadoc에서는, getInputStream()가 디코드 된 입력 스트림을 돌려 주므로, 목적을 무효로합니다.

답변

2

메시지의 형식이 잘못되었습니다. You're not allowed to set Content-Transfer-Encoding to quoted-printable on a multipart part :

콘텐츠 전송 인코딩 헤더 필드가 메시지 헤더의 한 부분으로 나타나는 경우는, 그 메시지의 몸 전체에 적용됩니다. Content-Transfer-Encoding 헤더 필드가 엔터티의 헤더의 일부로 나타나면 해당 엔터티의 본문에만 적용됩니다. 엔터티가 "multipart"유형의 인 경우 에는 "7bit", "8bit"또는 "binary"이외의 값을 갖는 Content-Transfer-Encoding이 허용되지 않습니다.

당신은 아마 MimeMessage 's의 콘텐츠 스트림을 디코딩 최상위을 얻고 그것에서 MimeMultipart의 인스턴스를하지만, 그건 그냥 깨진 메시지의 근본적인 문제를 해결 해킹 있어요 수 있습니다.

+0

대단히 감사합니다. 이것은 왜 그것이 그대로 행동했는지 설명했습니다. – Gilbeg