首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Javamail API读取eml文件中包含的eml文件

如何使用Javamail API读取eml文件中包含的eml文件
EN

Stack Overflow用户
提问于 2017-06-07 21:39:46
回答 0查看 7K关注 0票数 0

我有一个EML文件,其中包含另一个EML文件作为附件。当我尝试使用JAVAMAIL API获取附件文件时,getDisposition值表示附件,而getfileName()显示NULL

代码语言:javascript
复制
    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);
                     }
                }
            }
        }
    }
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44414338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档