2012-01-31 158 views
2
获取附件名称

我正在开发Notes 8.5.2的Lotus Notes插件,该插件将附件从电子邮件保存到硬盘。但是,当我尝试从Notes文档中读取附件名称时,我总是得到包含第一个附件名称和一些垃圾数据的相同字符串。Lotus Notes从文档

protected Vector<String> getAttachmentNames() throws NotesException, 
     IOException { 
    Vector<String> attachmentNames = new Vector<String>(); 
    Item item = null; 
    Enumeration<?> itemsEnum = mailDoc.getItems().elements(); 
    while (itemsEnum.hasMoreElements()) { 
     item = (Item) itemsEnum.nextElement(); 
     if (item.getType() == Item.ATTACHMENT) { 
      attachmentNames.add(getAttachmentNameOf(item)); 
     } 
    } 
    return attachmentNames; 
} 

protected String getAttachmentNameOf(Item item) throws NotesException, 
     IOException { 
    return getAttachmentName(item.getValueString()); 
} 

getAttachmentName只做一些字符串格式化以生成唯一的文件名。

回答

1

要注意的东西。 MIME附件并不总是被识别为文档附件。因此,尽管您可以在Notes客户端中看到它,但您将无法以编程方式访问它。

以下技术说明详细介绍了它以及如何解决它。

http://www-01.ibm.com/support/docview.wss?rs=463&&uid=swg21219985

+0

听起来像我的问题,我在保存附件之前将消息转换为MIME。在转换为MIME作品之前保存附件。 感谢您的链接,值得注意的东西。 – Trellmor 2012-02-01 08:27:56

1

的“附件”,不仅可以为类型ATTACHMENT,也EMBEDDEDOBJECT,...

试图找到所有RichTextItems,从这些项目中获得所有EmbeddedObject S(nrt.getEmbeddedObjects()),然后得到嵌入对象的名称(eo.getName())。

+0

谢谢你的提示,但我刚刚发现我的错误(我认为)。我做了三件事:保存邮件文本,将邮件保存为.eml文件并保存所有附件。将邮件另存为.eml文件我将它转换为mime'mailDoc.convertToMIME(2);'并将mime部分写入硬盘。如果我在将邮件转换为MIME之前导出附件,它会起作用,如果我之后将它们导出失败。 – Trellmor 2012-01-31 17:47:38