Lotus notes lotus agent分离附件(嵌入对象)

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”,

我的lotus代理拆下附件。实际上,除了“xxx@aol.fr

我确实调试了这个代理,但我看到测试“Isarray(rtitem.EmbeddedObjects)”没有通过。这意味着rtitem.EmbeddedObjects不是数组,尽管邮件已准备好附件

我不知道为什么

我在谷歌上搜索了很多,我刚刚发现了一个类似的问题

我试过这个暗示

”测试
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
附件以不同的方式存储

在“纯”Notes-Mail中,附件存储在Richtext-Item“Body”中,您可以从那里获得它们

在Mime-Mail中,附件是否可以在RichtextItem或文档本身中找到,取决于发件人设置、服务器设置以及邮件从Mime转换为Richtext的位置

顺便说一下:使用iNotes或Traveler创建的邮件也将是Mime邮件


知道了这一点,您的问题的答案是:对于这两种类型的邮件,没有单一的解决方案。您需要同时实现这两个属性才能确保。

我使用了返回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