2016-01-29 3 views
1

У меня есть файл p7m на моем диске, который содержит 1 jpg-изображение, 1 текстовый файл и контекст тела электронной почты. К счастью, я могу получить текстовый текст электронной почты и файл p7s. Я могу проверить файл p7s (сертификат), но я не могу найти два вложения. Похоже на отсутствие. Я не знаю почему? Кто-нибудь встретил эту проблему? И файл p7m находится в EWS (Outlook).Отсутствующие вложения при анализе .p7m файл

public static void main(String args[]) { 
try { 
    DataSource source = new FileDataSource("C:/Users/zhontao/Desktop/smime.p7m"); 
    MimeMultipart multi1 = new MimeMultipart(source); 
    for (int i = 0; i < multi1.getCount(); i++) { 
    Part part1 = multi1.getBodyPart(i); 
    if (part1.getContent() instanceof Multipart) { 
     Multipart multi2 = (Multipart) part1.getContent(); 
     for (int j = 0; j < multi2.getCount(); j++) { 
     Part part2 = multi2.getBodyPart(i); 
     String contentType = part2.getContentType(); 
     System.out.println(contentType); 
     // generally if the content type multipart/alternative, it is email text. 
     if (part2.isMimeType("multipart/alternative")) { 
      if (part2.getContent() instanceof Multipart) { 
      Multipart multi3 = (Multipart) part2.getContent(); 
      for (int k = 0; k < multi3.getCount(); k++) { 
       Part part4 = multi3.getBodyPart(k); 
       String contentType1 = part4.getContentType(); 
       System.out.println(contentType1); 
       if (part4.isMimeType("text/plain") && !Part.ATTACHMENT.equalsIgnoreCase(part4.getDisposition())) { 
       System.out.println(part4.getContent().toString()); 
       } else if (part4.isMimeType("text/html") && !Part.ATTACHMENT.equalsIgnoreCase(part4.getDisposition())) { 
       System.out.println(part4.getContent().toString()); 
       } 
      } 
      } 
     } 
     } 
    } else { 
     String contentType = part1.getContentType(); 
     System.out.println(contentType); 
     String disposition = part1.getDisposition(); 
     System.out.println(disposition); 
     System.out.println(part1.getFileName()); 
     // this.saveFile(part1.getFileName(), part1.getInputStream()); 
    } 
    } 
} catch (MessagingException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

}

ответ

0
Part part2 = multi2.getBodyPart(i); 

должен быть

Part part2 = multi2.getBodyPart(j); 
+0

спасибо за вашу помощь. Я делаю такую ​​глупую ошибку. – Cain

Смежные вопросы