Lotus notes lotus agent分离附件(嵌入对象)
我的lotus代理拆下附件。实际上,除了“xxx@aol.fr” 我确实调试了这个代理,但我看到测试“Isarray(rtitem.EmbeddedObjects)”没有通过。这意味着rtitem.EmbeddedObjects不是数组,尽管邮件已准备好附件 我不知道为什么 我在谷歌上搜索了很多,我刚刚发现了一个类似的问题 我试过这个暗示Lotus notes lotus agent分离附件(嵌入对象),lotus-notes,lotusscript,Lotus Notes,Lotusscript,我的lotus代理拆下附件。实际上,除了“xxx@aol.fr” 我确实调试了这个代理,但我看到测试“Isarray(rtitem.EmbeddedObjects)”没有通过。这意味着rtitem.EmbeddedObjects不是数组,尽管邮件已准备好附件 我不知道为什么 我在谷歌上搜索了很多,我刚刚发现了一个类似的问题 我试过这个暗示 ”测试 Dim vEval作为变体 将embObj设置为noteSembedObject vEval=Evaluate(“@AttachmentNames”,
”测试
Dim vEval作为变体
将embObj设置为noteSembedObject
vEval=Evaluate(“@AttachmentNames”,curdoc)
弗雷尔五世酒店
LogInfo(“detachefchier()v=“&v”)
如果v“那么
Set embObj=curdoc.GetAttachment(v)
调用emobj.ExtractFile(pathDir+pathFile&v)
如果结束
端孔
它工作得很好。我非常高兴
但是最后一点:我不知道为什么前面的代码不起作用
非常感谢
顺致敬意,
dsea嵌入对象属性的帮助文档说明: 如果富文本项不包含嵌入对象,则返回空
不要使用Isarray(rtitem.EmbeddedObjects)而是使用IsEmpty(rtitem.EmbeddedObjects),具体取决于邮件类型
- Notes Native=NRPC路由,Notes Richtext或
- Mime=SMTP-Routed,Mime-Type
知道了这一点,您的问题的答案是:对于这两种类型的邮件,没有单一的解决方案。您需要同时实现这两个属性才能确保。我使用了返回True的
IsEmpty(rtitem.EmbeddedObjects)
,但为什么?电子邮件(从发送)xxx@aol.fr)真的很有吸引力!并且curdoc.HasEmbedded
返回True。我认为附件存在于另一个富文本字段中,或者是在文档级别附加的。这可以解释为什么IsEmpty(rtitem.EmbeddedObjects)
和curdoc.HasEmbedded
都返回true。你能看看curdoc.EmbeddedObjects
返回什么吗?好的,我试试。正如您所说,我是否必须验证邮件是否在所有富文本字段或文档级别上都有附件?我们是否有唯一的解决方案,无论附件在何处都能起作用?感谢您必须验证文档是否有附件或任何富文本。您的第二个代码段可以在附件所在的任何位置工作。答案是附件可以有几种不同的存在方式:它们可以位于富文本字段中,也可以是MIME部件(MIME附件可以是内嵌的,而不是实际显示为附件),还可以位于文档级别(有时称为V2附件,因为这是Notes 2.x中提供的全部内容)。有一些方法可以处理后端类中的所有情况,但很难正确处理。使用@AttachmentNames是一种很好的破解方法,可以绕过所有细节。
Set rtitem = curdoc.GetFirstItem("Body")
If Not rtitem Is Nothing Then
If Isarray( rtitem.EmbeddedObjects ) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
fullpath = path + o.source
Call o.ExtractFile(fullpath)
End If
End Forall
End If
End If
'test
Dim vEval As Variant
Dim embObj As NotesEmbeddedObject
vEval = Evaluate("@AttachmentNames", curdoc)
ForAll v In vEval
LogInfo("detacheFichier() v=" & v)
If v <> "" Then
Set embObj = curdoc.GetAttachment(v)
Call embObj.ExtractFile(pathDir + pathFile & v)
End If
End ForAll