获取作为winmail.dat收到的POP 3的电子邮件附件

时间:2013-02-19 04:07:19

标签: javamail pop3 winmail.dat

当我尝试从POP 3邮件获取附件时,我将它们作为winmail.dat获取,而不是原始附加文件名。如何获取原始文件名?

for (int i = 0; i < multipart.getCount(); i++) 
        {
            BodyPart bodyPart = multipart.getBodyPart(i);

            if(!Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition())) 
            {
                //do something
            }
            else
            {
                bodyPart.getFileName(); // here only get the winmail.dat
            }   
        }

1 个答案:

答案 0 :(得分:2)

这是Exchange设置的一部分,遗憾的是,您需要使用JTNEF从WinMail.dat中提取原始内容。

“Java TNEF包是TNEF消息处理程序的开源代码实现,可以用作命令行实用程序或集成到基于Java的邮件应用程序中以提取原始消息内容。”< / em>的

这可以在JavaMail的第三方工具上找到。

作为替代方案,看起来更简单的是POI-HMEF

样品提取:

public void extract(String winmailFilename, String directoryName) throws Exception {
   HMEFContentsExtractor ext = new HMEFContentsExtractor(new File(winmailFilename));

   File dir = new File(directoryName);
   File rtf = new File(dir, "message.rtf");
   if(! dir.exists()) {
       throw new FileNotFoundException("Output directory " + dir.getName() + " not found");
   }

   System.out.println("Extracting...");
   ext.extractMessageBody(rtf);
   ext.extractAttachments(dir);
   System.out.println("Extraction completed");
}

还有一个打印内容here的示例。