JavaMail에 좋은 해결책처럼 보인다. 찾기, 파일에서 MimeMessage
만들기 내용이 전송 인코딩이 변경 MimeBodyPart.setHeader("Content-Transfer-Encoding", "quoted-printable")
를 호출하고 MimeMessage.writeTo()
를 통해 결과 메시지를 작성하려는 신체 부분이의 라인을 따라
뭔가 :.
Session session = Session.getInstance(new Properties());
MimeMessage mm = new MimeMessage(new FileInputStream(msgfile));
// assuming we know that it's a multipart; otherwise, check Content-Type first...
MimeMultipart multi = (MimeMultipart) mm.getContent();
for (int i = 0; i < multi.getCount(); i++) {
MimeBodyPart mbp = (MimeBodyPart) multi.getBodyPart(i);
mbp.setHeader("Content-Transfer-Encoding", "quoted-printable");
}
mm.saveChanges();
mm.writeTo(new FileOutputStream(outfile));
기본적으로 MimeMessage
은 메시지를 변경했을 때 Message-ID
헤더를 재설정합니다. 이 기능을 원하지 않으면 MimeMessage.updateMessageID()
을 아무 작업없이 무시하십시오.
답변 해 주셔서 감사합니다. JavaMail의 MimeMessage 객체를 수정하면 중첩 된 Multipart에서 제대로 작동하지 않습니다. 솔루션으로 일부 부품은 업데이트되지만 그렇지 않은 부품도 있습니다. JavaMail에서 잘 알려진 문제라고 생각합니다 (http://labs.consol.de/lang/en/blog/java/java-mail/removing-attachments-with-javamail/ 참조). – Antares
예제 코드는 중첩 된 multipart를 처리하지 않습니다. 사용하고자하는 기능을 보여주기위한 지침 일뿐입니다. 이 기사에서 언급 된 문제를 보여주는 재귀 프로그램을 실제로 작성 했습니까? 스트림에서 파싱 된 메시지는 그 문제가 없어야하기 때문에 ... – dkarp