Java Lotus Notes-邮件文档-获取附件名称(和导出附件)
我的一个lotus notes邮件文档中有三个附件 Desert.jpg、Hydrageas.jpg和Tulips.jpg 我有下面的代码段Java Lotus Notes-邮件文档-获取附件名称(和导出附件),java,email,lotus-notes,lotus-domino,email-attachments,Java,Email,Lotus Notes,Lotus Domino,Email Attachments,我的一个lotus notes邮件文档中有三个附件 Desert.jpg、Hydrageas.jpg和Tulips.jpg 我有下面的代码段 Vector<Item> itemList = lotusNotesDocument.getItems(); for (Item item : itemList) { if (item.getType() == Item.ATTACHMENT) {
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());
}
}
这是dominoapi中的一个bug吗?以前有其他人遇到过这个吗
我的确切要求是将附件保存到磁盘
PS:我正在使用Lotus Expediter 6.2.3.20110921-0940这确实是一种bug,但它太古老了,以至于“这只是Notes的行为”。如果您有多个名称相同的项目,则始终会得到第一个项目 但是,通常NotesDocument中的附件嵌入到富文本项中,因此可以循环rt项并获取附件。如果是这种情况,此代码应执行以下操作:
ForAll i In doc.Items
If i.Type = RICHTEXT Then
Print "rt item:", i.Name
If Not IsEmpty(i.EmbeddedObjects) Then
If ( i.Type = RICHTEXT ) Then
ForAll o In i.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
If dir(sPath & o.Name)<>"" Then Kill sPath & o.Name
Print sPath & o.Name
Call o.ExtractFile(sPath & o.Name)
End If
End ForAll
End If
End If
End If
End ForAll
在所有情况下都有一个限制-如果您有几个相同的命名附件,那么您只能使用一次“正确”的名称,其他所有附件都将使用内部生成的名称。我不知道还有什么更好的解决方案,可以通过C API来获取这些信息。我已经找到了答案 我好像有一个
lotusNotesDocument.convertToMIME();
在我前面提出的代码块之前执行的语句
如果我去掉这个,输出如下
*****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=
**1***111********* ATTACHMENT=$FILE=Desert.jpg
**1***111********* ATTACHMENT=$FILE=Hydrangeas.jpg
**1***111********* ATTACHMENT=$FILE=Tulips.jpg
我使用lotusNotesDocument.convertToMIME()将notes邮件导出到磁盘。因此,我将把这两条语句移到附件导出部分下面
通过下面的另一篇帖子找到了答案问题是在输出中我只能看到一个附件'hydangeas.jpg'(写了三次)。我期待着所有三个附件名称沙漠.jpg,Hydrageas.jpg和郁金香.jpg
lotusNotesDocument.convertToMIME();
**1***111********* ATTACHMENT=$FILE=Desert.jpg
**1***111********* ATTACHMENT=$FILE=Hydrangeas.jpg
**1***111********* ATTACHMENT=$FILE=Tulips.jpg