我正在构建一个系统,允许Intranet用户将文件拖放到div我们的ColdFusion站点上,然后在一些验证后会自动将它们上传到文件服务器.我的要求之一是:当上传的.msg文件是文件(Outlook电子邮件)时,提取任何作为该电子邮件附件的文件并单独上传.这可以使用org.apache.poi.hsmf.MAPIMessageJava对象.使用以下代码,我可以看到列出的每个附件对象.然后我可以获取他们的文件名和扩展名,并将每个文件名和扩展名保存到本地文件系统.
但是,如果附件是另一个.msg文件,则不起作用.当我调用getEmbeddedAttachmentObject()附加.msg文件时,它返回一个仅包含"undefined"的对象.非.msg文件返回一个二进制对象,然后我可以将其传递给FileWrite()ColdFusion函数.进一步检查MAPIMessage对象显示它有一个write()方法,但在调用它时我得到一个错误说明:
注意 - 对不起,此文件格式尚不支持写入.
这也得到了http://poi.apache.org上的文档的支持.
总而言之,我可以毫无问题地将每个电子邮件附件写入文件系统,除非附件是另一封电子邮件.我运气不好还是有另一种方法可以实现这一目标?
<cfscript>
// Load test .msg into MAPIMessage object
MAPIMessage = createObject("java", "org.apache.poi.hsmf.MAPIMessage");
message = MAPIMessage.init('C:\Test\Test Email 1 Attachment.msg');
// Get array of attached files
attachments = message.getAttachmentFiles();
// If attachments were found
if(arrayLen(attachments) > 0) {
// Loop over each attachment
for (i=1; i LTE arrayLen(attachments); i++) {
// Dump the …Run Code Online (Sandbox Code Playgroud)