2013-10-21 2 views
1

나는 다음과 같은 코드로 이메일을 보내는 Java 코드를 가지고 있습니다. 사실 저는 Httprequest 매개 변수에서 Mimemessage를 받았고 mimemessage에서 일부 내용을 기존 본문에 추가 할 것입니다.JavaMail 콘텐츠 전송 인코딩 문제

Mimemessage가 Multipart 콘텐츠 형식 인 경우 메시지를 보내는 동안 문제가 발생하지 않습니다.

메시지가 text/plain 및 text/html content-type 인 경우 내가 설정 한 콘텐츠 전송 인코딩이 본문에 적용되지 않았습니다.

docs

Q 기준 자료 : JavaMail에 나를 위해 모든 인코딩 및 디코딩을 수행하더라도, 내가 수동으로 일부 신체 부위의 인코딩을 제어 할 필요가있다. A : 드문 경우이지만 인코딩을 제어해야하는 경우 JavaMail의 기본 동작을 재정의하는 여러 가지 방법이 있습니다. 간단한 접근 방식은 다음과 같습니다. 전체 메시지를 만든 후 msg.saveChanges()를 호출 한 다음 mbp.setHeader ("Content-Transfer-Encoding", "base64")와 같은 것을 사용하여 지정된 본문 부분에 대해 base64 인코딩을 적용합니다.

또 다른 방법은 MimeBodyPart를 서브 클래스 화하고 updateHeaders 메서드를 재정의하여 super.updateHeaders()를 먼저 호출 한 다음 위와 같이 Content-Transfer-Encoding 헤더를 설정하는 것입니다.

위의 경우에도 적용됩니다. 그러나 그것은 나를 위해 작동하지 않습니다.

InputStream ins = request.getInputStream(); 
MimeMessage msg = new MimeMessage(session,ins); 
msg.setContent("some non-Ascii content","text/plain; charset="UTF-8""); 
//Tried setheader before saveChanges() method, also doesn't work for me 
//msg.setHeader("Content-Transfer-Encoding","base64"); 
msg.saveChanges(); 
//Now tried based on above docs after saveChanges method, also doesn't work 
msg.setHeader("Content-Transfer-Encoding","base64"); 

이 문제를 해결하는 데 도움을주십시오.

답변

0

당신은이 질문의 대부분을 other post에 복사했으며 거기에서 그 일부에 답변했습니다.

http 요청에서 메일 메시지의 콘텐츠를 보낸 다음 해당 콘텐츠를 기반으로 서버에서 새 MIME 메시지를 만드는 것이 더 좋을 것입니다. 편집하다.