1

当我尝试从 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
            }   
        }
4

1 回答 1

2

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

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

这可以在 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");
}

这里还有一个打印内容的样本。

于 2013-02-19T04:23:12.047 回答