2017-04-14 4 views
0

나는 전자 메일의 첨부 파일을 확인하는 코드를 가지고 : 나는 mp.getBodyPart(index)을 반복하면전자 메일에서 만 첨부 파일을 가져

final Multipart mp = (Multipart) msg.getContent(); 
final int numAttachments = mp.getCount(); 
... 
final Part part = mp.getBodyPart(attachmentNumber); 

그러나, 첨부 파일의 numAttachments 반환 번호 + 1. 나는 것을 볼 I 첨부 파일과 전자 메일을 반복합니다. 나는 이메일이 아닌 첨부 파일을 받고 싶다.

첨부 파일은 보통 것, 항상은 아니지만, 첨부 파일의 내용 - 처리가 :

나는 that을 알고있다. 첨부 파일에는 대개 파일 이름이 있지만 항상 그런 것은 아닙니다.

테스트 할 때 전자 메일은 항상 0 번째 인덱스에 있고 첨부 파일은 그 다음에옵니다. 따라서 0 번째 색인을 건너 뛰는 것은 해결책 일 수 있지만 모든 전자 메일 서버에 대해 유효한지 여부는 알 수 없습니다.

어떻게 전자 메일에서 첨부 파일을 가져올 수 있습니까?

+0

"첨부"개념은 실제로 정의되지 않았습니다. 그러나 다중 파트 부속 유형이 정의되어 파트를 처리하는 f}을 이해하는 데 도움이됩니다. 예를 들어, multipart/related 및 multipart/alternative는 매우 다릅니다. – erickson

+0

Exchange에서 테스트 할 때 첫 번째 인덱스는 항상 전자 메일이지만 확실하게 알고 싶습니다. 처음 시작하는 좋은 접근법은 최고 수준의 다중 부분/혼합 된 내용으로 된 메시지를 고려한 다음 첫 부분 이후의 부분을 그들이 말하든 말든 첨부 파일로 간주하는 것입니다 .' http : //www.oracle.com/technetwork/java/faq-135477.html#attachments 제안 사항을 확인합니까? – kamaci

답변

0

단순한 경우 multipart/mixed 유형의 메시지는 메시지의 기본 내용으로 첫 번째 본문 부분을 포함하고 첨부 파일로 다른 본문 부분을 갖습니다. 첫 번째 본문 부분은 간단한 텍스트/일반 부분이거나 멀티 파트/대체 또는 멀티 파트/관련 부분 일 수 있습니다. 그러나 첫번째 신체 부위를 건너 뛰는 것은 보통 당신이 원하는 것을 할 것입니다.

MIME에서 허용되는 더 많은 복잡한 경우가 있습니다. 이러한 경우를 처리할지 여부와 방법을 결정해야합니다. 가장 복잡한 경우는 서명되고 암호화 된 메시지이지만 상대적으로 드뭅니다.