当我尝试从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
}
}
答案 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的示例。