notes获取计算机名,Lotus Notes - 邮件文档 - 获取附件名称(和导出附件)

这确实是一种错误,但是如此古老以至于“这就是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

对于它们不是富文本项(直接附加到文档)的情况,我认为代码应该类似:

If Not IsEmpty(doc.Embeddedobjects) Then

ForAll o1 In doc.Embeddedobjects

If ( o1.Type = EMBED_ATTACHMENT ) Then

'Set o = obj2

If Dir(sPath & o1.Name)<>"" Then Kill sPath & o1.Name

Print "doc>", sPath & o1.Name

Call o1.ExtractFile(sPath & o1.Name)

End If

End ForAll

End If

然而,我只是测试了这段代码并且惊讶地发现它没有拿起任何附件(甚至文件中也没有OLE对象)我想知道是否有人对此有评论 - 我很确定它的工作状态良好过去的日子?

进一步调查 - 适用于项目和直接嵌入项目的解决方案是:

dim names, obj

names = Evaluate("@AttachmentNames", doc)

ForAll aname In names

Set obj = doc.Getattachment(aname)

Print "any>", sPath & obj.Name

Call obj.ExtractFile(sPath & obj.Name)

End ForAll

在所有情况下都有一个限制 - 如果您有几个相同的命名附件,您将只有一个“正确”名称,所有其他名称将使用内部生成的名称。我不知道一个更好的解决方案,而不是下载到C API来获取此信息。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值