java Lotus Notes邮件文档获取附件名称(和导出附件)
我的一个lotus notes邮件文档中有三个附件
沙漠。九头蛇怪。jpg和郁金香。jpg
我有下面的代码段
Vector<Item> itemList = lotusNotesDocument.getItems();
for (Item item : itemList)
{
if (item.getType() == Item.ATTACHMENT)
{
System.out.println("*****111********* ATTACHMENT=" + item.getName() + "=" + item.getValueString());
}
else if (item.getType() == Item.EMBEDDEDOBJECT)
{
System.out.println("*****222********* EMBEDDEDOBJECT=" + item.getName() + "=" + item.getValueString());
}
else if (item.getType() == Item.MIME_PART)
{
System.out.println("*****333********* MIME_PART=" + item.getName() + "=" + item.getValueString());
}
}
这段代码的输出如下
*****333********* MIME_PART=Body=
*****333********* MIME_PART=Body=
*****111********* ATTACHMENT=$FILE=Hydrangeas.jpg
*****111********* ATTACHMENT=$FILE=Hydrangeas.jpg
*****111********* ATTACHMENT=$FILE=Hydrangeas.jpg
*****333********* MIME_PART=Body=
*****333********* MIME_PART=Body=
这是dominoapi中的一个bug吗?以前有其他人遇到过这个吗
我的确切要求是将附件保存到磁盘
PS:我正在使用Lotus Expediter 6.2.3.20110921-0940
# 1 楼答案
这确实是一种bug,但它太古老了,以至于“这只是音符的行为”。如果您有多个名称相同的项目,则始终会得到第一个项目
但是,通常NotesDocument中的附件嵌入到富文本项中,因此可以循环rt项并获取附件。如果是这种情况,此代码应执行以下操作:
对于不是富文本项(直接附加到文档)的情况,我认为代码应该类似:
然而,我刚刚测试了这段代码,并惊讶地发现它并没有拾取任何附件(甚至文档中的OLE对象),我想知道是否有人对此有意见-我很确定它在过去的好日子里工作正常
在进一步调查中,一个既适用于项目又适用于直接嵌入项目的解决方案是:
在所有情况下都有一个限制-如果您有几个相同的命名附件,那么您只能使用一次“正确”的名称,其他所有附件都将使用内部生成的名称。我不知道有什么更好的解决方案,比下拉到C API来获取此信息更好
# 2 楼答案
我找到了答案
我好像有一个
在我前面提出的代码块之前执行的语句
如果我去掉这个,输出如下
我有很多记录。convertToMIME()将notes邮件导出到磁盘。因此,我将把这两条语句移到附件导出部分下面
通过以下Link的另一篇帖子找到了答案