2014-10-21 3 views
1

메일 서버에서 메일을 읽는 자체 작성 Java 메일 클라이언트가 있습니다.Java 메일 API로 이메일을 읽는 중 알 수없는 인코딩이 인용되거나 인쇄 될 수 있습니다.

나는이 클라이언트가 하나의 복잡한 전자 메일 메시지를 읽으려고 할 때 예외를 발견했습니다. 스택 트레이스에서는 'quoted/printable'인코딩을 알 수 없으며 아마도이 정보로 솔루션을 찾을 수있을 것입니다.

어쨌든, 나는 질문을 완료거야, 그리고 여기에 로그를 넣어 :

java.io.IOException: Unknown encoding: quoted/printable 
at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:113) 
at com.sun.mail.handlers.text_plain.getContent(text_plain.java:107) 
at javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:790) 
at javax.activation.DataHandler.getContent(DataHandler.java:537) 
at javax.mail.internet.MimeBodyPart.getContent(MimeBodyPart.java:644) 

는 여기에 몇 가지 thml 형식의 텍스트를이 인코딩 정보 정보

--=_374450e655545f2af979375837b3e516 
Content-Transfer-Encoding: quoted/printable 
Content-Type: text/plain; charset=utf-8 

나머지입니다 포함, 메시지 부분입니다.

그래서 javax.mail 공급자/버전을 변경하지 않고 문제를 해결할 수있는 방법이 있습니까? 지금은

group: 'com.sun.mail', name: 'javax.mail', version: '1.5.1' 

를 사용하고 아니면 그냥 문제를 오해하고 나는 그것을 다른 방법으로 해결해야합니까?

+0

이 [답변] (http://stackoverflow.com/questions/21574745/java-encode-string-in-quoted-printable) help? – gtgaxiola

+0

@gtgaxiola ummm 실제로 사용할 인코딩을 수동으로 처리하지 않습니다. 매개 변수없이 hrtContent 메서드를 호출하면됩니다. – AdamSkywalker

답변

1

메일 작성자가 작성한 메일이 손상되었습니다. 문제를 해당 우편물 소유자에게보고하십시오. 올바른 이름은 "quoted-printable"이며 "quoted/printable"는 아닙니다.

대부분의 경우 이러한 오류는 RFC를 먼저 읽지 않아도 스팸 메일러를 작성하는 아마추어의 결과입니다.

"mail.mime.ignoreunknownencoding"시스템 속성을 "true"로 설정하면 JavaMail에서 단순히 오류를 무시하고 데이터를 디코딩하지 않도록 할 수 있습니다. 예외를 잡아 getEncoding 메서드를 사용하여 헤더 값을 가져온 다음 보낸 사람이 무엇을 염두에두고 있는지 추측하고 getRawInputStream 메서드를 사용하여 직접 데이터를 디코딩 할 수 있습니다.

+0

감사합니다. – AdamSkywalker