2017-06-07 15 views
0

別のEMLファイルを添付ファイルとして含むEMLファイルがあります。 JAVAMAIL APIを使用して添付ファイルを取得しようとすると、getDispositionの値が添付ファイルを示しますが、getfileName()にはNULLと表示されます。Javamail APIを使用してemlファイルにemlファイルを読み込む方法

Properties props = new Properties(); 
      Session mailSession = Session.getDefaultInstance(props, null); 
      InputStream source = new FileInputStream("C:\\Mail1496085.eml"); 
      MimeMessage message = new MimeMessage(mailSession, source); 
      System.out.println("Subject : " + message.getSubject()); 
      System.out.println("From : " + message.getFrom()[0]); 
      System.out.println("--------------"); 
      System.out.println("Body : " + message.getContent()); 
      String contentType = message.getContentType(); 
      if (contentType.contains("multipart")) { 
System.out.println("Multipart EMail File"); 
      Multipart multiPart = (Multipart) message.getContent(); 
      int numberOfParts = multiPart.getCount(); 
      System.out.println("Parts:::"+numberOfParts); 
      String wi="IM-67890-PROCESS"; 
      String saveDir = System.getProperty("user.dir")+"\\Docs"; 
      saveDir=saveDir + File.separator+wi; 
      boolean file =new File(saveDir).mkdir(); 
      if (file) { 
        System.out.println("Directory: " + wi + " created"); 
       // logger.debug("Directory: " + workItem + " created"); 
       } 

      for (int partCount = 0; partCount < numberOfParts; partCount++) { 
       MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount); 
       String disposition=part.getDisposition(); 
       if (Part.ATTACHMENT.equalsIgnoreCase(disposition)) { 
        // this part is attachment  
        String fileName = part.getFileName(); 
        String extension=""; 
        System.out.println("Attached File Name::"+fileName); 
        saveDir=saveDir + File.separator + fileName; 
        int i=fileName.lastIndexOf("."); 
         if(i>0) 
         { 
          extension=fileName.substring(i+1); 
         } 
        if(extension.equalsIgnoreCase("eml")) 
        { 
         part.saveFile(saveDir); 
         extractEML(saveDir, wi); 
         System.out.println("This is a eml file"); 
        } 
        else if(extension.equalsIgnoreCase("msg")) 
        { 
         part.saveFile(saveDir); 
         extractMSG(saveDir,wi); 
         System.out.println("This is a msg file"); 
        } 
        else 
        { 
         System.out.println("This is other file"); 
        } 
        } else { 
         System.out.println("Not an eml file"); 
       System.out.println("File Name::"+part.getFileName()); 
       } 
      } 
     } 
} 


public static void extractEML(String emlPath,String wi) throws MessagingException, IOException 
    { 
     //String fileName=""; 
     String path=System.getProperty("user.dir") + File.separator + "Docs" + File.separator + wi + File.separator + "EML_PDF"; 
     boolean file =new File(path).mkdir(); 
     if(file) 
     { 
      System.out.println("Folder EML_PDF Created Successfully"); 
     } 
     Properties props = new Properties(); 
     Session mailSession = Session.getDefaultInstance(props, null); 
     InputStream source = new FileInputStream(emlPath); 
     MimeMessage message = new MimeMessage(mailSession, source); 
     System.out.println("Subject : " + message.getSubject()); 
     System.out.println("From : " + message.getFrom()[0]); 
     System.out.println("--------------"); 
     System.out.println("Body : " + message.getContent()); 
     String contentType = message.getContentType(); 
     if (contentType.contains("multipart")) { 
      System.out.println("Multipart EMail File"); 
      Multipart multiPart = (Multipart) message.getContent(); 
      int numberOfParts = multiPart.getCount(); 
      System.out.println("Parts:::"+numberOfParts); 
      for (int partCount = 0; partCount < numberOfParts; partCount++) { 
       MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount); 
       if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) { 
        String fileName = part.getFileName(); 
        String extension=""; 
        path=path + File.separator + fileName; 
        int i=fileName.lastIndexOf("."); 
        if(i>0) 
        { 
         extension=fileName.substring(i+1); 
        } 
        if(extension.equalsIgnoreCase("pdf")) 
        { 
         part.saveFile(path); 
        } 
       } 
      } 
     } 
    } 
+0

あなたが質問を編集し、.emlファイルを開いて読み込むコードを含めると、あなたの質問はもっと簡単に答えるようになります。 – VGR

答えて

0

添付ファイルのファイル名はオプションです。あなたはファイル名なしで動作するようにプログラムを修正する必要があります。

+0

#ビルド、私は解決策を得ました。私は、あなたが私の場合PDFを保存していますが、私はしたいのですが、あなたは私の場合には、他の条件を使用せずにすべてのタイプのファイル(.pdf、doc、docx、jpeg、pngなど)すべての種類のファイルを保存します。 – Kumar

+0

MimeBodyPart.saveFileを使用してください。それはそれがどんなタイプのファイルであろうと気にしません、それは何かを保存します。 –

関連する問題