2016-06-09 3 views
0

Content-Type : multipart/alternative를 사용하여 메일에서 첨부 파일을 다운로드하려면 어떻게해야합니까?JavaMail 메일에서 첨부 파일을 다운로드하십시오.

Multipart multiPart = (Multipart) message.getContent(); 

int numberOfParts = multiPart.getCount(); 
for(int j = 0; j < numberOfParts; j++) 
{ 
    MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(j); 

    if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) 
    { 
     part.saveFile("C:\\Users\\Demo\\Desktop\\" + part.getFileName()); 

    } 
} 
+0

두 번째'if'는 중복되어 있으므로 제거해야합니다. 역 슬래시는 자바 문자열 리터럴의 특수 문자이므로'part.saveFile' 행은 컴파일되지 않습니다. – VGR

답변

0

이메일에는 다양한 MIME 구조가 있습니다. 일반적인 해결책은 다른 문제들 중에서도 서명되고 암호화 된 메시지를 고려해야하기 때문에 상당히 복잡 할 수 있습니다. 다른 메일러는 다른 MIME 구조를 사용하며, 물론 일부 메일러는 MIME을 사용하는 방법에 버그가 있습니다. 지원해야 할 사례를 결정해야합니다.

일반적으로 multipart/alternative는 다른 버전의 주 메시지 본문을 포함하는 데 사용되므로 첨부 파일이 포함되어 있지 않으므로 건너 뛸 수 있습니다. 일반적으로 첨부 파일이있는 메시지는 주 메시지 본문이 포함 된 첫 번째 본문 부분과 함께 최상위 다중/혼합 콘텐츠를 갖습니다. 첫 번째 부분은 간단한 텍스트 부분, text/plain 및 text/html 부분이있는 multipart/alternative 또는 text/html 부분 및 관련 이미지와 관련된 multipart/multipart 일 수 있습니다.

첨부 파일은 일반적으로 항상 첨부 파일의 콘텐츠 - 처분을 갖습니다. 첨부 파일에는 대개 파일 이름이 있지만 항상 그런 것은 아닙니다.

처음부터 좋은 방법은 최상위 멀티 파트/혼합 콘텐츠가있는 메일 만 고려한 다음 첫 번째 부분 이후의 부분을 첨부 파일로 간주할지 여부를 결정하는 것입니다. 위에서 말했듯이, 서명되고 암호화 된 메시지는 이것을 더욱 복잡하게 만듭니다.

관련 문제